Selenium、Java、TestNGを使用してテストを記述しています。私は単体テストで多くのソフトアサーションを使用することがあります。失敗した場合、TestNGの記者は、発生したコードの行を表示しません。それを示すようにする方法はありますか?私はFailure Exception
でレポートをクリックしたときに実際にそれがs_assert.assertAll();
に私を取るが、私のような、特定の行に撮影する必要があります。s_assert.assertEquals(Alert_text, "Hi.. is alert message!", "Alert Is InCorrect");
はTestNGレポートの作成方法ソフトアサーションが失敗した行を表示する
答えて
カスタムソフトアサーション(私は検証それを命名している)の下の実装が何をすべきあなたが求めているもの。
import org.testng.annotations.Test;
import org.testng.asserts.Assertion;
import org.testng.asserts.IAssert;
import org.testng.collections.Maps;
import java.util.Arrays;
import java.util.Map;
public class SoftAssertExample {
private Verifier verifier = new Verifier();
@Test
public void testMethod() {
verifier.assertEquals(false, true);
verifier.assertTrue(true);
verifier.assertAll();
}
/**
* A simple soft assertion mechanism that also captures the stacktrace to help pin point the source
* of failure.
*/
public static class Verifier extends Assertion {
private final Map<AssertionError, IAssert<?>> m_errors = Maps.newLinkedHashMap();
@Override
protected void doAssert(IAssert<?> a) {
onBeforeAssert(a);
try {
a.doAssert();
onAssertSuccess(a);
} catch (AssertionError ex) {
onAssertFailure(a, ex);
m_errors.put(ex, a);
} finally {
onAfterAssert(a);
}
}
public void assertAll() {
if (! m_errors.isEmpty()) {
StringBuilder sb = new StringBuilder("The following asserts failed:");
boolean first = true;
for (Map.Entry<AssertionError, IAssert<?>> ae : m_errors.entrySet()) {
if (first) {
first = false;
} else {
sb.append(",");
}
sb.append("\n\t");
sb.append(ae.getKey().getMessage());
sb.append("\nStack Trace :");
sb.append(Arrays.toString(ae.getKey().getStackTrace()).replaceAll(",", "\n"));
}
throw new AssertionError(sb.toString());
}
}
}
}
例コード: s_assert.assertEquals(Alert_text、 "!こんにちは..警告メッセージである"、 "アラートですInCorrect1"); s_assert.assertEquals(Alert_text、 "Hi ..は警告メッセージです!"、 "Alert Is InCorrect2"); s_assert.assertEquals(Alert_text、 "Hi ..警告メッセージです!"、 "Alert Is InCorrect3"); s_assert.assertEquals(Alert_text、 "Hi ..警告メッセージです!"、 "Alert Is InCorrect4"); s_assert.assertall();
実行は、それが指す失敗した後(s_assert.assertall();)ライン、それはソフトアサートが失敗したメッセージを示していた時間を意味.... アラートですInCorrect2 アラートですInCorrect3
出力を確認してください。
これは失敗したソフトアサートの回線番号を表示しますか。 –
は、どのソフトアサートが失敗したか、およびそのメッセージ "Alert Is InCorrect2"を表示します。 –
- 1. testngテストケースが失敗した場合、Bambooビルドに失敗する
- 2. TestNG XMLファイルがXSSFWorkbookの呼び出し/作成に失敗しました
- 3. CVOpenGLESTextureCacheCreateTextureFromImageレポート「IOSurfaceイメージ(テクスチャ)の作成に失敗しました」
- 4. TestNG - 設定が失敗したときの再試行
- 5. 失敗したWixQuietExec CustomActionのエラーダイアログを表示する方法
- 6. TestNG beforetestが継承に失敗したときにテストをスキップする方法
- 7. レポートを表示して、ダウンロードしたフォントのデコードに失敗しました
- 8. 失敗したTestNGテストのプログラムによる再実行
- 9. JenkinsのPMDプラグイン - ビルド失敗のレポートを表示するには?
- 10. MavenでのTestNGテストの実行に失敗しました
- 11. maven testngは失敗しますが、Eclipseで動作します
- 12. testNGでindex.htmlレポートをオーバーライドする方法
- 13. TestNGレポートに@BeforeClassと@AfterClassメソッドを表示したい
- 14. 木場の視覚化を作成して過去7日間失敗したジョブを表示する方法
- 15. testngまたはtestngレポートからテストをスキップまたはスキップする方法
- 16. アクティビティの作成に失敗を表示する
- 17. TestNGテストはMaven Testとして実行すると失敗しますが、TestNGスイートとして実行すると失敗します
- 18. TestNGレポートに21を超えるテストが表示されない
- 19. XSL変換が失敗したXML出力のJD Edwardsレポートで失敗する
- 20. ログインが失敗した場合にログインページにメッセージを表示する方法
- 21. Wordpress:register_settings()の成功または失敗を表示します。
- 22. C++でシステムコールが失敗したときに表示される失敗ログメッセージを読み取る方法は?
- 23. Web Crystalレポートの生成データベースのログオンに失敗しました
- 24. SpringMVC:AJAXリクエストが失敗した場合の表示エラー表示
- 25. TestNGのスイート秒テスト失敗 - > NullPointerExceptionが
- 26. iOS:失敗したログインアニメーションの作成方法
- 27. レポートの生成中にログインに失敗しました
- 28. AJAXの成功と失敗のレポート
- 29. お客様が作成したレコードを表示する方法
- 30. ビルド失敗Oozieディストリビューションの作成に失敗しました
私はこのように(非常に悪いスタイルですが)あなたの仕事を "スペア"にするべきではなく、良いメッセージを作成するべきだと思います。あなたのアサーションが本当にあまりにも鈍く、賢明なメッセージを書くのと似ている場合、メソッドの開始時にInteger dullAssertNumを作成し、すべての鈍的アサートに "assert" +(dullAssertNum ++)。toStringを含めます。 – Gangnus
なぜそれは悪いスタイルですか? 1つのテストメソッドにたくさんの行がある場合にのみ、行番号を指定する必要があるためです。そして、生成されたファイルの場合にのみ悪いスタイルではありません。生成されたファイルでは、行番号を生成してメッセージに挿入することができます。 – Gangnus