繁体   English   中英

如何使用时间戳生成单独的测试输出文件夹?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM