Assertion失败时如何继续执行

时间:2011-03-23 08:11:16

标签: java testng selenium-rc assertion verify

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

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

第一个断言失败,执行停止。但我想继续进一步的代码片段。

5 个答案:

答案 0 :(得分:20)

我建议你使用软断言,它本身在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/

答案 1 :(得分:9)

Selenium IDE使用verify来执行软断言,这意味着即使检查失败也会继续测试,并在测试结束时或在硬断言事件中报告失败。

使用TestNG,可以通过使用自定义测试侦听器来获得这些软断言。我已在博客上记录了如何执行此操作:http://davehunt.co.uk/2009/10/08/using-soft-assertions-in-testng.html

基本上,您需要创建自己的verify*方法,在这些方法中,您可以捕获断言失败并将其添加到地图中。然后在自定义afterInvocation侦听器中,如果映射不为空,则可以将测试设置为失败。

答案 2 :(得分:5)

将您的断言更改为验证:

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

答案 3 :(得分:3)

我再次添加继续断言失败的最简单方法之一。这被问到here

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

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

答案 4 :(得分:1)

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

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