Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何生成带有时间戳的单独测试输出文件夹?_Java_Maven_Selenium Webdriver_Testng - Fatal编程技术网

Java 如何生成带有时间戳的单独测试输出文件夹?

Java 如何生成带有时间戳的单独测试输出文件夹?,java,maven,selenium-webdriver,testng,Java,Maven,Selenium Webdriver,Testng,我正在使用TestNG执行我的套件。但是,测试输出文件夹在每次运行后都会被覆盖。我想生成一个单独的带有时间戳的测试输出文件夹。我正在使用Maven构建项目。有什么方法可以实现这一点吗?您可以尝试在测试中实现一个驱动程序(比如driver.java),该驱动程序可用于启动测试(mainClass) 此类还可以有一种方法来解析testNG.xml文件,以定义Test类,对于每个此类测试,您可以迭代执行以下语句块- TestNG testNG = new TestNG(); // add listen

我正在使用TestNG执行我的套件。但是,测试输出文件夹在每次运行后都会被覆盖。我想生成一个单独的带有时间戳的测试输出文件夹。我正在使用Maven构建项目。有什么方法可以实现这一点吗?

您可以尝试在测试中实现一个驱动程序(比如
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();
TestNG TestNG=new TestNG();
//如果需要,添加侦听器
testNG.setCommandLineSuite();//testNG.xml文件的路径
testNG.setOutputDirectory();//要指定的时间戳目录
testNG.run();


或者,另一种方法可以是在套件的
@AfterAll
方法中创建一个时间戳文件夹(假设为20170309),并配置使用将资源移动到创建的文件夹中。这也可以通过另一种方式完成,在清理阶段之前,您可以复制和移动先前的执行结果,并继续执行测试以覆盖现有报告。

您可以使用自己的逻辑覆盖默认报告器。例如,使用
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);
  }
}
公共类MySuite HtmlReporter扩展了SuiteHTMLReporter{
@凌驾
void generateReport(java.util.List xmlSuites,
java.util.List套件,
java.lang.String输出目录){
字符串时间戳=。。。
super.generateReport(xmlSuites,suites,outputDirectory+“-”+时间戳);
}
}

您可以对其他报告者执行相同的操作,不要忘记禁用它们(并启用您的)。

为什么要生成带有时间戳的单独测试输出文件夹?它会创建更多的重复文件。为什么不提供带有时间戳的可通过电子邮件发送的报告文件?