protected void function1(arg1, arg2, arg3) throws Exception {
    Object myObject = buildMyObjectUsing(arg1, arg2, arg3);
    if(SOME_BOOLEAN){
        functionA(arg1, myObject)
    } else{
            myObject.functionB(arg1)
    }
}


我正在使用旧版代码,并将void functionA添加到function1。我现在尝试编写一个测试,以确保SOME_BOOLEAN为true时调用functionA,而SOME_BOOLEAN为false时不调用functionA。

有没有一种方法可以伪造functionA,以便实际上不会调用它,但是我仍然可以看到,当SOME_BOOLEAN为true时,它将被调用?现在functionA已损坏,所以我编写的测试一直失败,因为functionA引发异常。

再说一次,我不担心测试functionA是否真正起作用,只要它被调用即可。

最佳答案

在测试方法中,您可以测试实际类的继承类,并且可以覆盖funtionaA

final boolean[] methodCalled = new boolean[1];
MyClass testTarget = new MyClass()
{
   void functionA(args)
  {
    methodCalled[0] = true;
  }

};

testTarget.function1(arg1, arg2, arg3);
//assert methodCalled[0] is true

关于java - stub 方法,但仍检查是否使用了模仿,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43076993/

10-10 14:42