小编Har*_*ryQ的帖子

单元测试验证伴生对象方法被调用(模拟伴生对象)

当切换到 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)

java unit-testing kotlin

10
推荐指数
2
解决办法
9865
查看次数

标签 统计

java ×1

kotlin ×1

unit-testing ×1