MissingMethodInvocationException:在Kotlin中访问最终类时单元测试用例失败

时间:2018-10-30 00:47:13

标签: junit kotlin powermockrunner

我有一个非常简单的类,可以验证字符串的长度。我正在尝试编写一个测试用例

class UTComponent {
    fun isThisValidString(input: String): Boolean {
        return (input.length > 2)
    }
}

这里是测试类:

@RunWith(PowerMockRunner::class)
@PrepareForTest(UTComponent::class)
class UTComponentTest {

    @Mock
    lateinit var subject: UTComponent

    @Before
    fun setup() {
        MockitoAnnotations.initMocks(this)
        PowerMockito.mockStatic(UTComponent::class.java)
    }

    @Test
    fun testInvalidateIfItValidString() {
        Mockito.`when`(subject.isThisValidEmail("")).thenReturn(false)
    }
}

但它正在抛出

  

org.mockito.exceptions.misusing.MissingMethodInvocationException:   when()需要一个参数,该参数必须是“模拟的方法调用”。   例如:       when(mock.getArticles())。thenReturn(articles);   ...

使方法公开修复问题,但这是我不想做的事情。

open fun isThisValidEmail(input: String): Boolean {
        return (input.length > 0)
    }

请注意,我使用的是Kotlin,默认情况下,类和方法是最终的。但这 PowerMockRunner 可以帮助解决问题!

我这里想念什么吗?

0 个答案:

没有答案