バージョン 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