JavaをEclipseとTestNGフレームワークで使用してSelenium RCを使用しています。次のコードスニペットがあります。
assertTrue(Selenium.isTextPresent("Please enter Email ID"));
assertTrue(Selenium.isTextPresent("Please enter Password"));
最初のアサーションは失敗し、実行は停止されました。しかし、私はコードのさらなる断片を継続したいと思います。
Selenium IDEは、verifyを使用してソフトアサーションを実行します。つまり、チェックが失敗してもテストは続行し、テストの最後またはハードアサーションのイベントで失敗を報告します。
TestNGでは、カスタムテストリスナーを使用して、これらのソフトアサーションを持つことができます。私はこれを私のブログに文書化しました: http://davehunt.co.uk/2009/10/08/using-soft-assertions-in-testng.html
基本的に、独自のverify*
メソッドを作成する必要があります。これらのメソッドでは、アサーションエラーをキャッチしてマップに追加できます。次に、カスタムafterInvocation
リスナーで、マップが空でない場合にテストを失敗に設定できます。
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/
アサーションを検証に変更します。
verifyTrue(Selenium.isTextPresent("Please enter Email ID"));
verifyTrue(Selenium.isTextPresent("Please enter Password"));
ここでも、アサーションの失敗を続行する最も簡単な方法の1つを追加します。これが尋ねられた ここ 。
try{
Assert.assertEquals(true, false);
}catch(AssertionError e)
{
System.out.println("Assertion error. ");
}
System.out.println("Test Completed.");
アサーションが失敗すると、実行が停止するはずです。それが、アサーションを使用するポイントです。
両方をテストするアサーションを宣言できますが、2つを同時にテストします。最初の失敗の原因を修正してから、2番目のアサーションに進んでください。