web-dev-qa-db-ja.com

アサーションが失敗したときに実行を継続する方法

JavaをEclipseとTestNGフレームワークで使用してSelenium RCを使用しています。次のコードスニペットがあります。

assertTrue(Selenium.isTextPresent("Please enter Email ID"));
assertTrue(Selenium.isTextPresent("Please enter Password"));

最初のアサーションは失敗し、実行は停止されました。しかし、私はコードのさらなる断片を継続したいと思います。

14
Ripon Al Wasim

Selenium IDEは、verifyを使用してソフトアサーションを実行します。つまり、チェックが失敗してもテストは続行し、テストの最後またはハードアサーションのイベントで失敗を報告します。

TestNGでは、カスタムテストリスナーを使用して、これらのソフトアサーションを持つことができます。私はこれを私のブログに文書化しました: http://davehunt.co.uk/2009/10/08/using-soft-assertions-in-testng.html

基本的に、独自のverify*メソッドを作成する必要があります。これらのメソッドでは、アサーションエラーをキャッチしてマップに追加できます。次に、カスタムafterInvocationリスナーで、マップが空でない場合にテストを失敗に設定できます。

9
Dave Hunt

TestNgでネイティブに提供されているソフトアサーションを使用することをお勧めします

package automation.tests;

import org.testng.asserts.Assertion;
import org.testng.asserts.SoftAssert;

public class MyTest {
  private Assertion hardAssert = new Assertion();
  private SoftAssert softAssert = new SoftAssert();
}

@Test
public void testForSoftAssertionFailure() {
  softAssert.assertTrue(false);
  softAssert.assertEquals(1, 2);
  softAssert.assertAll();
}

出典: http://rameshbaskar.wordpress.com/2013/09/11/soft-assertions-using-testng/

21
Stormy

アサーションを検証に変更します。

verifyTrue(Selenium.isTextPresent("Please enter Email ID"));
verifyTrue(Selenium.isTextPresent("Please enter Password"));
5
rs79

ここでも、アサーションの失敗を続行する最も簡単な方法の1つを追加します。これが尋ねられた ここ

try{
        Assert.assertEquals(true, false);
        }catch(AssertionError e)
        {
            System.out.println("Assertion error. ");
        }

        System.out.println("Test Completed.");

アサーションが失敗すると、実行が停止するはずです。それが、アサーションを使用するポイントです。

両方をテストするアサーションを宣言できますが、2つを同時にテストします。最初の失敗の原因を修正してから、2番目のアサーションに進んでください。

1
TrueDub