我想将我的报告存储在另一个文件夹中,而不是带有时间戳的测试输出所以我添加了一个程序:
public class Customreporter implements IReporter
{
File fd = new File("");
String date;
DateFormat df = new SimpleDateFormat("yyyy-MM-dd_hh-mm-ss");
String folderNameWithTimeStamp = df.format(new Date());
String currentDir = System.getProperty("user.dir") + "//Reports//";
String finalPath = currentDir + folderNameWithTimeStamp;
@SuppressWarnings("deprecation")
public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory)
{
TestNG.getDefault().setOutputDirectory(finalPath);
TestNG.getDefault().setXmlSuites(xmlSuites);
}
}
并将我的xml更改为
<suite name="suitedemo" parallel="false">
<listeners>
<listener class-name="com.validation.Customreporter">
</listeners>
<test name="suitetestdemo">
<suite-files>
<suite-file path="./exceptions.xml" />
<suite-file path="./screenshot.xml" />
</suite-files>
</test>
</suite>
现在,它每次都会创建一个新文件夹,但有时只存储电子邮件报告。我能做什么?我不想自定义报告,我只想每次运行套件时都将报告存储在新文件夹中。我更改了构建文件,它正在运行,但我们正在执行xml文件,而不是构建。
提前感谢Smith
我在使用setOutputDirectory()时看到过类似的行为。但当我改变实现时,它对我来说很有效。我没有在设计时创建testng.xml,而是使用TestNGXmlSuite类动态创建一个。然后使用setOutputDirectory()设置不同的输出目录。如果你需要更多的帮助,请告诉我。
在高水平上,
XmlSuite suite = new XmlSuite();
suite.setSuiteFiles(files);
List<XmlSuite> suites = new ArrayList<XmlSuite>();
suites.add(suite);
TestNG tng = new TestNG();
tng.setXmlSuites(suites);
我还没有测试setSuiteFiles(),因为我有类级别的testng.xml。此外,这不需要是一个倾听者。您可以在main()或init中使用它。。。。。。。