当切换到 Kotlin 时,静态方法被移动到一个伴随对象中。但是,没有明显的方法可以对调用这些“静态方法”的其他方法进行单元测试。
在 Java 中,我们可以使用 PowerMockito 的 MockStatic(SomeClass.class) 来验证在被测方法中调用了静态方法。PowerMock 在 Kotlin 中失去了它的魔力。
为了测试,我创建了以下类。
public class DummyJava {
static public Void staticMechod(){
System.out.print("Dummy method is called");
return null;
}
}
class DummyCompanion {
companion object {
fun someCompanionMethod(){
System.out.printf("companion method is called\n")
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在有另一个类调用 DummyCompanion.someCompanion
public class DummyWrapper {
public void callAStaticMethod(){
DummyJava.staticMechod();
}
public void callCompanionMethod(){
DummyCompanion.Companion.someCompanionMethod();
}
}
Run Code Online (Sandbox Code Playgroud)
单元测试callAStaticMethod()我们使用了以下内容
@RunWith(PowerMockRunner.class)
@PrepareForTest({DummyJava.class, DummyCompanion.Companion.class})
public class staticClassTest {
//This case works
@Test
public void testForStaticMethod() { …Run Code Online (Sandbox Code Playgroud)