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

时间:2017-03-08 20:56:21

标签: java maven selenium-webdriver testng

我正在使用TestNG来执行我的套件。但是,每次运行后,test-output文件夹都会被覆盖。我想生成一个带时间戳的单独测试输出文件夹。我正在使用Maven来构建项目。有没有办法实现这个目标?

2 个答案:

答案 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阶段之前复制并移动先前的执行结果,并继续执行测试以覆盖现有报告。