【发布时间】:2019-01-04 16:49:26
【问题描述】:
所以在对 kotlin 类进行了大量跟踪和错误之后,我发现 java 中的相同代码是可测试的,但不能用 kotlin 测试。
@RunWith(MockitoJUnitRunner.class)
public class TestStuff {
@Mock
B b;
@Test
public void testStuff(){
A a = new A(b);
Mockito.when(b.provideValue()).thenReturn("");
a.doStuff();
}
}
class A(val b: B) {
fun doStuff() {
b.provideValue()
}
}
open class B {
fun provideValue(): String {
return "b"
}
}
这会导致:org.mockito.exceptions.misusing.MissingMethodInvocationException: when() 需要一个参数,该参数必须是“模拟方法调用”。 例如: when(mock.getArticles()).thenReturn(articles);
但是如果我将 B 类写为 java 类,即
public class B {
public String provideValue(){
return "b";
}
}
测试有效。 有人可以解释为什么会发生这种情况,或者当 mockito 不能始终如一地工作时我应该如何测试 kotlin 代码。
【问题讨论】:
标签: java android unit-testing kotlin mockito