2017-03-28 17 views
1
protected void function1(arg1, arg2, arg3) throws Exception { 
    Object myObject = buildMyObjectUsing(arg1, arg2, arg3); 
    if(SOME_BOOLEAN){ 
     functionA(arg1, myObject) 
    } else{ 
      myObject.functionB(arg1) 
    } 
} 

私は従来のコードを使用してfunctionAにvoid functionAを追加しました。 SOME_BOOLEANがtrueのときにfunctionAが呼び出されるが、SOME_BOOLEANがfalseのときは呼び出されないことを確認するテストを今作成しようとしています。メソッドをスタブしても、mockitoを使用して呼び出されたかどうかを確認してください。

functionAをフェイクアウトして、実際に呼び出されないようにする方法はありますか?しかし、SOME_BOOLEANがtrueのときに呼び出されたことがまだわかりますか?今functionAが壊れているので、functionAが例外をスローするので、私が書いたテストは失敗し続けます。

また、私はfunctionAが実際に動作するかどうかをテストすることについて心配していません。試験方法で

+0

を上書きすることができ、それがそうであるならば、あなたのテストケースはSOME_BOOLEANのための唯一のテストは、右、真である必要があります? – hunter

+0

私は、SOME_BOOLEANが真だったのでfunctionAが呼び出されたときにだけ渡すテストをしようとしています。 SOME_BOOLEANがfalseのときにfunctionAが呼び出されると、テストは失敗します。それは役に立ちますか?私は単体テストに慣れていないので、すべてを逆向きにしているかもしれません。 – Patrick

+0

はfunctionA privateですか? – hunter

答えて

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 
関連する問題