Kotlin 使用 ArgumentCaptor.capture() returns null

Kotlin using ArgumentCaptor.capture() returns null

我对测试还很陌生,所以我可能正在做一些事情wrong.I正在尝试捕获传递给方法的值

    @Mock
    private lateinit var service: TestService


    @InjectMocks
    private lateinit var underTest: UnderTestService

    @org.junit.jupiter.api.Test
        fun `testMethod`() {
            //given
            val var1 = Test.Value
            val var2 = TestClass::class.java
            val var3 = listOf(Entry1(), Entry2())
    
            //when
            underTest.method(var1, var2, var3)
    
            val argumentCaptor = ArgumentCaptor.forClass(String::class.java)
    
            verify(service, times(2)).method(
                argumentCaptor.capture(),
                argumentCaptor.capture()

        )

在这里,出于某种原因验证 argumentCaptor.capture() return null 之后,我不明白我做错了什么?

java.lang.NullPointerException: argumentCaptor.capture() must not be null

我认为它与 kotlin 相关,我尝试获取参数的方法的签名如下所示

    fun method(param1: String, vararg param2: String?) {
            //do something
  }

MockitoKotlinHelpers.kt 可以帮到你。捕获函数提供了调用ArgumentCaptor.capture()

的方法

示例:

verify(service, times(2)).method(
                capture(argumentCaptor),
                capture(argumentCaptor));