[英]How to generate separate test-output folder with timestamp?
我正在使用 TestNG 来执行我的套件。 但是,每次运行后,测试输出文件夹都会被覆盖。 我想用时间戳生成一个单独的测试输出文件夹。 我正在使用 Maven 来构建项目。 有没有办法实现这一目标?
您可以使用自己的逻辑覆盖默认报告器。 例如,使用SuiteHTMLReporter
:
public class MySuiteHTMLReporter extends SuiteHTMLReporter {
@Override
void generateReport(java.util.List<XmlSuite> xmlSuites,
java.util.List<ISuite> suites,
java.lang.String outputDirectory) {
String timestamp = ...
super.generateReport(xmlSuites, suites, outputDirectory + "-" + timestamp);
}
}
你可以对其他记者做同样的事情,不要忘记禁用它们(并启用你的)。
您可以尝试在您的测试中实现一个驱动程序(假设Driver.java
),它可用于启动您的测试(测试执行的mainClass
)。
这个类可以进一步有一个方法来解析testNG.xml
文件来定义Test
类,对于每个这样的测试,你可以迭代执行以下语句块 -
TestNG testNG = new TestNG();
// add listeners if needed
testNG.setCommandLineSuite(<yourXmlSuitePath>); // path to testNG.xml file
testNG.setOutputDirectory(<yourOutputDir>); // timestamped directory to specify
testNG.run();
或者另一种方法可能是在套件的@AfterAll
方法中创建一个带时间戳的文件夹(假设为 20170309),并使用maven-resources-plugin进行配置以将您的资源移动到创建的文件夹中。 这也可以以相反的方式完成,您可以在clean
阶段之前复制和移动先前的执行结果,并继续执行测试以覆盖现有报告。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.