私はこのような方法を持っています(簡略化)
private boolean x = someMethodToSetTheValueOfX();
private void method(args){
if(x){
method1();
}else{
method2();
}
}
xが真の場合、method1が呼び出されることを保証する単体テストを作成したいと思います。PowerMockのホワイトボックスを使用してxの値を設定し、メソッドを呼び出すことができることは知っていますが、method1()が呼び出されたことを確認するにはどうすればよいですか?method1()は無効であることに注意してください。
EasyMock / PowerMock以外の別のフレームワーク(Mockitoなど)を使用することは許可されていません。
あなたはこれを間違えています。それはあなたがあなたのテストを設計する方法ではありません。
まず第一に:PowerMock ...フレームワークの使用に注意してください。それらはバイトコード操作に依存しています。そして遅かれ早かれそれはトラブルを必要とします。PowerMock(ito)を使用する唯一の合理的な状況は、レガシー製品コードをテストする必要がある場合です。その他の状況:簡単にテストできるように、製品コードを変更します。
次に、この方法でコードをテストしないでください。
モックフレームワークを使用して、「テスト対象クラス」に渡すオブジェクトを作成/制御します。フレームワークを使用して「テスト対象クラス」を直接テストすることはありません。具体的には、プライベートメソッドを認識しているテストコードを記述したくない場合です。これらは実装の詳細です。
代わりに何をしますか:
a)前述のように、モックを使用して、テスト対象のクラスにオブジェクトを渡すことができます。そして、それらのモックを制御/検証して、「テスト中のクラス」が行うと予想される呼び出しを確認できます。したがって、最悪の場合、method1 / 2を別のオブジェクトに配置できます。次に、モック/検証を使用して、期待どおりに呼び出されたかどうかを確認できます。
b)「テスト対象クラス」のオブジェクトを作成し、それらのオブジェクトのプロパティを「アサート」します。または、メソッド呼び出しが返す結果。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加