17

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

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

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

4

5 回答 5

25

我建议你使用 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/

于 2014-03-24T14:57:52.630 回答
8

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

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

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

于 2011-03-23T13:26:51.800 回答
6

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

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

        System.out.println("Test Completed.");
于 2015-03-24T05:59:49.340 回答
5

将您的断言更改为验证:

verifyTrue(selenium.isTextPresent("Please enter Email ID"));
verifyTrue(selenium.isTextPresent("Please enter Password"));
于 2011-03-23T13:25:14.263 回答
1

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

你可以声明一个测试这两个东西的断言,但是你同时测试两个东西。最好先解决第一个失败的原因,然后再进行第二个断言。

于 2011-03-23T08:18:13.203 回答