我想创建JUnit / TestNG PROGRAMMATICALLY生成的测试报告。所以,这排除了ANT。我主要关注的是生成由Junit在执行测试用例时创建的XML文件。我已经读过RunListener可以帮助我实现这一点,但我还没弄清楚怎么做?我正在使用Selenium创建我的测试用例。
如何生成由JUnit创建的XML文件?
答案 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)
org.testng.IReporter接口只有一个方法: public void generateReport(List suites,String outputDirectory) 当所有套件都已运行时,TestNG将调用此方法,您可以检查其参数以访问刚刚完成的运行的所有信息。