2

実際の値が期待値と等しくない場合は失敗するように、try catch を配置した次のテストがあります。

    try{
        Assert.assertEquals(ExpectedCount, ActualCount);
    }catch (Throwable t){
         System.out.println ("Actual value is not equal to expected value");
    }

このテストを実行するたびに合格します。ただし、expected=actual の場合、メッセージは出力されません。これは正しいことです。それらが等しくない場合、私が印刷したメッセージ。したがって、テスト ロジックは有効です。

ただし、Juint テストは引き続きパスします。

私は以下を組み込んでみましたが、それを機能させることができません:

(これは、テストのクラスの公開レベルで追加されました)

@Rule

Public ErrorCollected errCollector = new ErrorCollector();

追加した:

errCollector.addError(t);

System.out.println ("Actual value is not equal to expected value");

エラーが返されます " Rule cannot be resolved to a type" インポートするオプションがありません。

@Ruleメソッドを使用してテストを失敗させる方法を見つけようとしましたが、わかりません。

4

1 に答える 1

3

@oers が言うように、Rule が見つからないのは、おそらく JUnit のバージョンが古すぎるためです。4.7 以降の新しいバージョンを試してください。

問題の最も簡単な解決策は、キャッチしている例外を再スローすることです。

try {
    Assert.assertEquals(ExpectedCount, ActualCount);
} catch (Throwable t) {
    System.out.println ("Actual value is not equal to expected value");
    throw t;
}

ただし、テスト メソッドに throws Throwable を追加する必要があります。アサートに説明を追加する別の方法があります。

Assert.assertEquals("Actual value is not equal to expected value", ExpectedCount, ActualCount);
于 2011-12-20T20:14:13.790 に答える