テストケース内のアサートの1つが失敗した場合でもエクセッションを継続する機能を提供するJfuncを使用して既存のフレームワークを構築しました。 Jfuncは、junit 3.xフレームワークを使用します。しかし今、私たちはjunit4に移行していますので、Jfuncをもう使用することはできず、junit 4.10 jarに置き換えました。
問題は、私たちのフレームワークでjfuncを広く使用し、テストケースでassertの1つが失敗した場合でもjunit 4でコードを実行し続けるようにしたいからです。
誰もがこれについて何か示唆を持っていますか?私はjunitでテストがより細かく、つまりテストケースごとに1つのアサートを必要とすることを知っていますが、何らかの理由で私たちのフレームワークでそれを行うことはできません。アサートの1つが失敗した場合でもjunit4でテストを継続します
答えて
ErrorCollectorルールを使用してこれを行うことができます。
public class MyTest {
@Rule
public ErrorCollector collector = new ErrorCollector();
//...tests...
}
次に、あなたがcollector.checkThat(...)
への呼び出しでアサート置き換える:最初のテストクラスのフィールドとしてのルールを追加し、それを使用する
。
@Test
public void myTest() {
collector.checkThat("a", equalTo("b"));
collector.checkThat(1, equalTo(2));
}
私はErrorCollectorも使用しますが、assertThatも使用してtry catchブロックに配置します。
import static org.junit.Assert.*;
import static org.hamcrest.Matchers.*;
@Rule
public ErrorCollector collector = new ErrorCollector();
@Test
public void calculatedValueShouldEqualExpected() {
try {
assertThat(calculatedValue(), is(expected));
} catch (Throwable t) {
collector.addError(t);
// do something
}
}
try/finallyブロックを使用してください。これは、私の場合で働いていた:また、手動でもsoftly.assertAll()を呼び出すことなく、それを使用する他の方法は存在しassertj - soft assertion
@Test
public void testCollectErrors(){
SoftAssertions softly = new SoftAssertions();
softly.assertThat(true).isFalse();
softly.assertThat(false).isTrue();
// Don't forget to call SoftAssertions global verification !
softly.assertAll();
}
を使用することができます
...
try {
assert(...)
} finally {
// code to be executed after assert
}
...
あなたはこの質問が2年前に掲載されたことを実感しましたが、すでに受け入れられた答えがありますか? –
@TheJuniorProgrammerちょうど一般的な注意、このサイトは受け入れられた答えについてだけではありません。要点は、回答を検索するユーザーが問題の解決策を見つけるのを助けることです。時には問題を解決するための複数のアプローチがあり、ある人にとってはうまくいくものが別の人にとってうまくいかないこともあります。 – nomistic
@nomistic fine、十分に真実。 –
- 1. 1つのスプリングBeanの初期化が失敗した場合でもwebappをロードし続ける
- 2. テストが失敗した場合、Android jenkinsビルドに失敗する
- 3. Junit4テストJsonSyntaxExceptionが失敗する
- 4. 別のテストが失敗した場合、テストをスキップできますか?
- 5. vstest.console.exeを使用して1つのテストが失敗した場合、テストを停止する方法は?
- 6. タスクの1つが失敗した場合、セロリチェーンが破損します
- 7. JSファイルサイズのテストは複数のファイルアップロードで失敗しますが、1つのファイルアップロードでは失敗します
- 8. 抽出ルールが失敗した場合のWebテストの停止
- 9. require_onceが失敗した場合でもスクリプトの実行を続行できますか?
- 10. 複数のコマンドをbashスクリプトで順番に実行し、少なくとも1つでも失敗した場合は失敗する
- 11. SQL接続が失敗した場合のトラップエラーの詳細
- 12. RSpecのは - テストが失敗した場合でも(ログインしているユーザーをシミュレートする)アプリケーションの作品
- 13. 1行が失敗した場合に挿入する方法
- 14. CBPeripheralは常にCBCentralManagerに接続します。ペアリングリクエストが失敗した場合でも
- 15. CasperJSでアサーションが失敗した場合のテストケースを続行するには?
- 16. テストが失敗した場合、セレンはブラウザを強制終了しません
- 17. 1つのコマンドが失敗してもすべてのコマンドが実行された場合、Bashは失敗します
- 18. python-requestsで一度失敗した場合、もう1つのリクエストを送信するには?
- 19. 継承クラスでポリモフィック・レール結合が失敗しますか?
- 20. テストに失敗した場合、私の統合テストの結果に後処理を実行できますか?
- 21. Capybara with:js => trueの場合、テストは失敗します。
- 22. python-behaveでJSONの等価性をアサートするには、失敗したテストでdiffを使用しますか?
- 23. PyQt5:Gtk-CRITICAL **:IA__gtk_widget_style_get:アサート 'GTK_IS_WIDGET(widget)'が失敗しました
- 24. gradle-android-test-pluginでテストに失敗した場合は、gradleビルドに失敗しないでください。
- 25. onCreateContextMenu()が失敗した場合、onListItemClick()をキャンセルします。
- 26. Google APIに失敗した1つのアドレスでCFWが失敗する
- 27. Mac OSXでのOracle接続の問題:「状態:失敗 - テストに失敗しました:Io例外:ネットワークアダプタが接続を確立できませんでした」
- 28. DB接続でTFS2010統合テストが失敗する
- 29. 失敗した場合のアクションのループ
- 30. Int32.TryParse()は失敗した場合に0を返します。成功または失敗ですか?
感謝。 最初の障害(すなわちcollector.checkThat(10、CoreMatchers.equalTo(11)))の後に動作し続けます。 しかし問題は、チェックの1つが失敗したとしてもテストが失敗とマークしたいということです。 上記のテストを実行した後、テストは合格とマークされます。私はそれが失敗し、スタックラインを失敗ラインに表示したい(アサーションが失敗したときと同様のもの)。 – user85
それは変です。私はちょうど私の答えで書いたコードを試して、それは期待どおりに働いた。テストは失敗し、失敗した各アサーションのスタックトレースが出力されます。ここでは、完全なテストコードと私が得た出力をIntelliJからテストを実行しています:https://gist.github.com/2419626 –
ああ...私の悪い、私はルールを追加することを忘れて、カオス.....混乱のために申し訳ありませんとポストのための多くのTHX。 – user85