2012-07-24 100 views
1

我需要在Excel报告中编写测试用例Pass/Fail状态。我如何以简单的方式捕捉结果?在蚂蚁XML/HTML报告状态(成功/失败)显示,所以我相信必须有某种方法来捕捉此..可以在@After Class
任何人都可以帮我解决这个问题吗?如何在使用JUnit4的Selenium Webdriver中捕获测试失败?

我使用硒的webdriverJUnit4和使用的Apache POI(哦,它拧我的脑海里呢!)为Excel处理。如果您需要更多信息,请告知我。

谢谢:)

P.S:正如我问了很多问题,这将是巨大的,如果有人可以改变或建议我改变,使这些问题和螺纹利于他人。

+0

您是否使用任何断言条件来验证您的测试?张贴一些代码,以便社区可以建议任何更改以帮助您。不要将整个代码仅发布相关代码。对于此问题,发布代码,通过该代码确定您的测试是否失败或通过。 – 2012-07-24 16:54:51

+0

@Hari:嗯,他们是简单的Selenium JUnit代码,如driver.get(url);发送密钥等是的,我一般使用断言,但我认为它只会返回true/false。我在谈论的JUnit报告有3个值 - 成功/失败/错误。我想抓住所有三个为我的excel报告。有没有办法做到这一点? – 2012-07-25 05:03:47

+0

就像这样 - http://www.junit.org/junit/javadoc/3.8.1/junit/framework/TestCase.html可以收集结果。但我无法正确使用它。 – 2012-07-25 05:15:45

回答

3

我得到了你的问题,这是我在我所有的测试用例都尽现 -

在您的测试情况下,如果你想检查是否2个字符串相等 -

你可能会使用这个代码 -

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

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

相反,你可以改变你这样的代码 -

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

现在这个结果在您的Excel工作表通过将testCaseStatus你的代码,添加一行到您的Excel您已使用Apache POI实现存储。如果您实施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()和错误()方法得到的整个结果。

您可以从here了解更多。

+0

谢谢!那么我现在正在使用这种类型的东西。但它有点痛苦,因为我的测试案例有很多这种assertTrue情况,我必须处理它们中的每一个并计算最终结果。而且,由于我使用的是用JUnit/Selenium编写的框架,因此实施起来非常困难。最重要的是,我想赶上错误状态。我需要3个状态通过/失败/错误,如在junitreport中所示。在JUnit中有一个存储这些数据的TestResult类。其实我想用它来做这件事。任何想法如何使用它? javadoc的链接出现在我对问题的评论中。 – 2012-07-25 12:20:12

+1

我编辑了我的答案,这可能对你有帮助。 – 2012-07-28 14:50:06

相关问题