生成JUnit报告使用的XML文件

时间:2012-01-30 10:26:10

标签: xml testing selenium junit testng

我想创建JUnit / TestNG PROGRAMMATICALLY生成的测试报告。所以,这排除了ANT。我主要关注的是生成由Junit在执行测试用例时创建的XML文件。我已经读过RunListener可以帮助我实现这一点,但我还没弄清楚怎么做?我正在使用Selenium创建我的测试用例。

如何生成由JUnit创建的XML文件?

4 个答案:

答案 0 :(得分:10)

JUnit不生成XML报告。 JUnit没有标准的XML输出格式。

其他工具生成XML,例如Ant / Maven。因此,您需要做的第一件事就是确定您想要哪种形式的XML文件,就像您在创建文件后要对文件做什么一样。

实际上,您对编程的限制并不排除ANT。您可以通过编程方式调用ant(请参阅Invoke ant from java, then return to java after ant termination)。这可能是生成蚂蚁兼容文件的最简单方法。

如果您希望创建自己的XML文件,则可以创建一个扩展RunListener的类,然后通过调用JUnitCore#run()或类似的方式运行测试。

public void main(String... args) {
    JUnitCore core= new JUnitCore();
    core.addListener(new RingingListener());
    core.run(MyTestClass.class);
}

您的RunListener只会发出适当的XML。这很容易理解:覆盖方法testRunStarted()等并写出XML。有关其工作原理的示例,请参阅TextListener,它执行相同的操作,但适用于文本。

答案 1 :(得分:4)

xml文件是由ant-junit生成的,我们可以通过程序来完成,代码如下:

Project project = new Project();
JUnitTask task = new JUnitTask();
project.setProperty("java.io.tmpdir",String); //set temporary directory
task.setProject(project);
JUnitTask.SummaryAttribute sa = new JUnitTask.SummaryAttribute();
sa.setValue("withOutAndErr");
task.setFork(false);
task.setPrintsummary(sa);
FormatterElement formater = new FormatterElement();         
FormatterElement.TypeAttribute type = new FormatterElement.TypeAttribute();
type.setValue("xml");
formater.setType(type);
task.addFormatter(formater);
JUnitTest test = new JUnitTest(String);// set Test.class.getname()          
test.setTodir(File); // set Location for your report
task.addTest(test);         
task.execute();

答案 2 :(得分:1)

如上所述,JUnit不会生成报告。但是如果您使用Maven执行 mvn clean install test surefire-report:report 会成功的

https://examples.javacodegeeks.com/core-java/junit/junit-report-generation-example/

答案 3 :(得分:-1)

你差点问同样的问题 here 如果您查看TestNG文档,您可以使用:

  

org.testng.IReporter接口只有一个方法:   public void generateReport(List suites,String outputDirectory)   当所有套件都已运行时,TestNG将调用此方法,您可以检查其参数以访问刚刚完成的运行的所有信息。