版本 3 完全不同 - 您现在可以决定需要哪些记者。下面的示例同时使用 Html 和 ExtentX:
ExtentHtmlReporter htmlReporter = new ExtentHtmlReporter("filePath");
ExtentXReporter extentxReporter = new ExtentXReporter("host");
ExtentReports extent = new ExtentReports();
extent.attachReporter(htmlReporter, extentxReporter);
不再需要结束单个测试,您只需要担心记录事件。下面将开始并在报告中添加 2 个测试:
extent.createTest("Test1").pass("pass");
extent.createTest("Test2").error("error");
写入结果文件与之前相同:
extent.flush();
根据您的测试运行程序(我将展示如何将其与 TestNG 一起使用),您现在必须创建测试并向它们添加信息,如下所示(以下方法支持多线程):
public class ExtentTestNGReportBuilder {
private ThreadLocal<ExtentTest> parentTest;
private ThreadLocal<ExtentTest> test;
@BeforeClass
public synchronized void beforeClass() {
ExtentTest parent = ExtentTestManager.createTest(getClass().getName());
parentTest.set(parent);
}
@BeforeMethod
public synchronized void beforeMethod(Method method) {
ExtentTest child = parentTest.get().createNode(method.getName());
test.set(child);
}
@AfterMethod
public synchronized void afterMethod(ITestResult result) {
if (result.getStatus() == ITestResult.FAILURE)
test.get().fail(result.getThrowable());
else if (result.getStatus() == ITestResult.SKIP)
test.get().skip(result.getThrowable());
else
test.get().pass("Test passed");
ExtentManager.getExtent().flush();
}
}
以上只是给你一个想法,你可以在这里找到整个代码库: https ://github.com/anshooarora/extentreports-java/issues/652#issuecomment-254078018