我正在使用TestNG来执行我的套件。但是,每次运行后,test-output文件夹都会被覆盖。我想生成一个带时间戳的单独测试输出文件夹。我正在使用Maven来构建项目。有没有办法实现这个目标?
答案 0 :(得分:1)
您可以使用自己的逻辑覆盖默认报告者。例如,使用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);
}
}
您可以为其他记者做同样的事情,不要忘记禁用它们(并启用它们)。
答案 1 :(得分:0)
您可以在测试中尝试并实现一个驱动程序(比如说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
阶段之前复制并移动先前的执行结果,并继续执行测试以覆盖现有报告。