存根方法,但仍然检查它是否使用mockito调用

时间:2017-03-28 18:14:44

标签: java junit mockito

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,以便它实际上不会被调用但是我仍然可以看到当SOME_BOOLEAN为真时它会被调用?现在,functionA被破坏,所以我写的测试一直都失败了,因为functionA会抛出异常。

同样,我并不担心测试functionA是否真的有效,只是它会被调用。

1 个答案:

答案 0 :(得分:0)

在测试方法中,您可以测试实际类的继承类,并且可以覆盖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