我进行了 2 个测试:addNewVideo
和 deleteRecentVideo
,其中第二个测试取决于第一个测试。第一个失败后,第二个将被忽略并且它不会运行。打开我的范围报告后,它看起来像这样:
我预计会有 2 项测试 - 1 项失败,1 项跳过,但报告中未正确显示。
ExtentListener.class
import com.aventstack.extentreports.*;
import com.aventstack.extentreports.markuputils.*;
import org.testng.*;
import java.util.*;
import static constants.FileResources.REPORT_DIR;
public class ExtentListener implements ITestListener {
private static Date d = new Date();
private static String fileName = String.format("%s%s%s%s", d.toString().replaceAll("[: ]", "_"), "_", System.getenv("env"), ".html");
private static ExtentReports extent = ExtentManager.createInstance(REPORT_DIR + fileName);
public static ThreadLocal<ExtentTest> testReport = new ThreadLocal<>();
@Override
public void onTestStart(ITestResult result) {
ExtentTest test = extent.createTest(result.getTestClass().getName() + "." + result.getMethod().getMethodName());
test.assignCategory(result.getTestClass().getName());
testReport.set(test);
}
@Override
public void onTestSuccess(ITestResult result) {
String methodName = result.getMethod().getMethodName();
String logText = methodName + " PASSED";
Markup m = MarkupHelper.createLabel(logText, ExtentColor.GREEN);
testReport.get().pass(m);
}
@Override
public void onTestFailure(ITestResult result) {
String methodName = result.getMethod().getMethodName();
String excepionMessage = Arrays.toString(result.getThrowable().getStackTrace());
testReport.get().fail("<details>" + "<summary>" + "<b>" + "<font color=" + "red>" + "Exception occured: Expand to check details"
+ "</font>" + "</b >" + "</summary>" + excepionMessage.replaceAll(",", "<br>") + "</details>" + " \n");
String failureLog = methodName + " FAILED";
Markup m = MarkupHelper.createLabel(failureLog, ExtentColor.RED);
testReport.get().log(Status.FAIL, m);
}
@Override
public void onTestSkipped(ITestResult result) {
String methodName = result.getMethod().getMethodName();
String logText = "<b>" + methodName + " SKIPPED" + "</b>";
Markup m = MarkupHelper.createLabel(logText, ExtentColor.ORANGE);
testReport.get().skip(m);
}
@Override
public void onTestFailedButWithinSuccessPercentage(ITestResult result) {
}
@Override
public void onStart(ITestContext context) {
}
@Override
public void onFinish(ITestContext context) {
if (extent != null) {
extent.flush();
}
}
}
我尝试实现 IInvokedMethodListener
但没有成功。
有没有办法在 ExtentReport4 上正确显示跳过的测试?
最佳答案
伙计们,我也遇到了这个问题,下面的代码对我有用。 像这样定义 testListener,然后在 Baseclass 启动之前使用 @listeners(TestListeners.class) 在 Baseclass 中调用这个 testListener 类。
注意:我使用过 Spark Extentreport
公共(public)类 TestListeners 实现 ITestListener {
@覆盖 公共(public)无效onTestSkipped(ITestResult结果){
Baseclass.extenttest = Baseclass.extent.createTest(result.getMethod().getDescription()).assignCategory("SkipedTest");
Baseclass.extenttest .log(Status.SKIP, result.getThrowable());
Baseclass.extenttest .log(Status.SKIP, result.getMethod().getDescription());
Baseclass.extenttest .log(Status.SKIP, MarkupHelper.createLabel(result.getName(), ExtentColor.YELLOW));
Baseclass.extent.flush();
} }
在您的测试类中定义@Test,如下所示
@Test(description = "测试用例名称", dependentOnMethods = { "所依赖的方法名称"})
关于java - 跳过的测试不会在 ExtentReport4 中记录为“已跳过”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59500703/