Assertion失败时如何继续执行

我正在使用Selenium RC使用Java与eclipse和TestNG框架。 我有以下代码片段:

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/

将您的断言更改为validation:

 verifyTrue(selenium.isTextPresent("Please enter Email ID")); verifyTrue(selenium.isTextPresent("Please enter Password")); 

我再次添加一个继续断言失败的最简单方法。 这是在这里问的。

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

一旦断言失败,执行应该停止,这就是使用它们的重点。

你可以声明一个测试这两个东西的断言,但是你要同时测试两件事。 更好地解决第一次失败的原因,然后继续第二次断言。