如何使用JUnit4捕获Selenium Webdriver中的测试失败?

时间:2012-07-24 13:10:43

标签: selenium webdriver apache-poi junit4

我需要在 Excel 报告中编写测试用例Pass/Fail状态。如何以简单的方式捕获结果?在Ant XML/HTML报告中显示状态(成功/失败),因此我认为必须有一些方法可以抓住这个......可能在@After Class
任何人都可以帮我解决这个问题吗?

我正在使用 Selenium Webdriver JUnit4 并使用 Apache POI (哦,我的想法也是如此!)进行excel处理。如果您需要更多信息,请告诉我。

谢谢:)

P.S:当我提出很多问题时,如果有人可以改变或建议我做出改变,使这些问题和线索对其他人有用,那就太棒了。

1 个答案:

答案 0 :(得分:3)

我遇到了你的问题,这就是我现在在所有测试案例中所做的事情 -

在您的测试用例中,如果要检查2个字符串是否相等 -

您可能正在使用此代码 -

Assert.assertTrue(value1.equals(value2));

如果这些值不相等,则会生成AssertionError。

相反,您可以像这样更改代码 -

String testCaseStatus = "";
if(value1.equals(value2)){
   testCaseStatus = "success";
}
else{
   testCaseStatus = "fail"; 
 }

现在,您将此结果存储在Excel工作表中,方法是将testCaseStatus传递给您的代码,该代码会为您使用Apache POI实现的Excel添加一行。如果实现try catch块,也可以处理“错误”的条件。

例如,您可以捕获一些异常并将状态添加到Excel工作表中。

已编辑部分答案 -

我刚刚想出如何使用TestResult类 - 这是我发布的一些示例代码 -

这是名为ExampleTest的测试用例类 -

public class ExampleTest implements junit.framework.Test {

@Before
public void setUp() throws Exception {
}

@After
public void tearDown() throws Exception {
}

@Test
public void test(TestResult result) {

    try{

        Assert.assertEquals("hari", "");

    }catch(AssertionFailedError e){

        result.addFailure(this, e);         
    }catch(AssertionError e){
        result.addError(this, e);
    }


}

@Override
public int countTestCases() {
    // TODO Auto-generated method stub
    return 0;
}

@Override
public void run(TestResult result) {

    test(result);
}

}

我从这段代码中调用上面的测试用例 -

public class Test {

public static void main(String[] args) {

    TestResult result = new TestResult();

    TestSuite suite = new TestSuite();

    suite.addTest(new ExampleTest());

    suite.run(result);

    System.out.println(result.errorCount());

}

}

您可以通过将它们添加到此套件中来调用许多测试用例,然后使用TestResult类failures()和errors()方法获取整个结果。

您可以从here了解更多信息。