1

我一直在尝试使用 Selenium 中的“验证”选项而不是“断言”选项。我的想法是使用验证选项是我的测试可以完全运行,然后获取错误列表。在尝试这样做时,我意识到“代码明智”的验证选项与 Assert 相同,但它只是被 try-catch 块包围。我已经尝试了各种选项来完成这项工作,但我面临的问题是测试仍然停止在中断的语句上,而不是给我一个错误列表。

我的结构是:

public class SelTests {

    public StringBuffer verificationErrors = new StringBuffer();
    public WebDriver driver;

    @BeforeTest
    public void setup() throws Exception {
        // DO SETUP STUFF
    }

    @Test
    public void TestScript1() throws Exception {

    try { //assertEquals("string1", "string2") } catch (Exception e) {verificationErrors.append(e.toString());}
    try { //assertEquals("string1", "string2") } catch (Exception e) {verificationErrors.append(e.toString());}
    try { //assertEquals("string1", "string2") } catch (Exception e) {verificationErrors.append(e.toString());}

    @AfterTest
    public void tearDown() throws Exception{

        driver.close();

        String verificationErrorString = verificationErrors.toString();
        if (!"".equals(verificationErrorString)) {
            fail(verificationErrorString);
            System.out.println(verificationErrorString);    
        }    
    }

但即使在以多种方式修改后,我仍然遇到同样的问题。我还尝试包围整个断言语句块,而不是像上面的代码中那样单独执行它们,但没有任何效果。我故意在一些断言中引入了错误,但每次我只得到 1 个错误的日志。

环境:

Selenium 2.30 Server-standalone
TestNG annotations and frameworks
Java code using WebDriver implementations
Eclipse
Windows 7 - 64bit (this should not matter though)

任何帮助指导我实现我想要实现的目标都将不胜感激。

谢谢,

阿利斯特

4

1 回答 1

3

它不去 catch 块的原因是 Asserts throw AssertionErrors。错误不同于异常。当您捕获异常时,您不会捕获 AssertionError。将 catch 块 Exception e 更改为 AssertionError 或 Throwable,这意味着任何异常或错误。

于 2013-02-28T04:15:45.777 回答