1 つの方法は、すべてのアサーション エラーをキャッチし、最後のステップでテスト ケースに失敗するか合格するかを決定することです。この場合、任意のステップで n 個を超えるエラーがあるかどうかを確認し、そうである場合はテストに失敗するように調整できます。
これが私がやったことです:
- テストケースの @Before で Errors の StringBuffer を初期化します
- アサーション エラーをキャッチして StringBuffer に追加し、エラーがスローされてテスト ケースが終了しないようにします。
StringBuffer をチェックして、テスト ケースに失敗するかどうかを判断します。
StringBuffer verificationErrors;
// Initialize your error SringBuffer here
@Before
public void initialize() {
verificationErrors = new StringBuffer();
}
// The following is one of the steps in the test case where I need to assert something
@When("^the value is (\\d+)$")
public void the_result_should_be(int arg1) {
try {
assertEquals(arg1, 0);
}
catch(AssertionError ae) {
verificationErrors.append("Value is incorrect- "+ae.getMessage());
}
次のように、@After またはテスト ケースの最後のステップで StringBuffer をチェックして、パスできるか失敗するかを判断します。
if (!(verificationErrors.size()==0)) {
fail(verificationErrors.toString());
}
唯一の問題は、レポートではすべてのステップが緑色に見えるのに、テスト ケースが失敗したように見えることです。次に、エラー文字列を調べて、どのステップが失敗したかを確認する必要がある場合があります。ステップを簡単に見つけられるように、アサーション エラーが発生したときはいつでも、文字列に追加情報を追加できます。