カスタム電子メール メッセージの作成を一般的に制御する一連の単体テストを含むパラメーター化されたテスト クラスがあります。現在、クラスには、パラメーター化されたクラスで使用される要因に依存する多くのテストがあり、テストの流れはすべてのテストで同じです。テストの例:
@Test
public void testRecipientsCount() {
assertEquals(3, recipientsCount);
}
受信者のリストに追加の内部メールを追加するメール クラスに特別な機能を追加する必要がありましたが、これは一部のケースでのみ発生し、問題につながります。
作成されたメッセージの量をアサートしたいとしましょう。以前のテストでは、各ケースで同じでしたが、現在はケースによって異なります。私にとって最も直感的な方法は、if ステートメントを追加することでした。
@Test
public void testRecipientsCount(){
if(something) {
assertEquals(3, recipientsCount);
}
else {
assertEquals(4, recipientsCount);
}
}
...
しかし、私のより経験豊富な同僚は、テスト クラスでは if を避けるべきだと言っています (そして、私もそれに同意します)。
2 つのテスト クラスでテストを分割するとうまくいくと思いましたが、両方のクラスで冗長なコードが発生する可能性があり (非内部メッセージが作成されたかどうか、そのサイズ、内容などを確認する必要があります)、いくつかの行が追加されました。それらの中の一つ。
私の質問は次のとおりです。if や冗長なコードを使用しないようにするにはどうすればよいですか (パラメーター化されたクラスを使用しないと、さらに冗長なコードが生成されます)。