gpt4 book ai didi

java - 在多线程中运行测试时,在测试可以使用 EndTest 安全结束之前调用关闭

转载 作者:行者123 更新时间:2023-12-03 23:14:08 29 4
gpt4 key购买 nike

当我在多线程(使用 TestNG 在多线程中启动测试)中运行测试时,我遇到了 ExtentTestInterruptedException 异常:

com.relevantcodes.extentreports.ExtentTestInterruptedException: 
Close was called before test could end safely using EndTest.
at com.relevantcodes.extentreports.Report.terminate(Report.java:425)
at com.relevantcodes.extentreports.ExtentReports.close(ExtentReports.java:917)

遵循的步骤

  1. 我在 @BeforeTest 方法中开始我的测试,使用范围报告 startTest 方法
  2. 并在 @AfterMethod 方法中使用范围报告 endTest 结束我的测试
  3. 我的范围报告关闭方法在@AfterSuite 函数中定义。
  4. 我从 @AfterSuite 中删除了 close() 方法调用,但在那种情况下,少数测试用例的结果显示为未知。

有人可以帮我解决这个问题吗?

最佳答案

这与范围报告有关。我不确定您是如何编写 @after 方法的,但我只能猜测您在代码中使用了 reports.endTest(test);这是旧版本的范围报告。很可能你的问题是它。这是具有最新范围报告解决方案的替代方案,因为此处没有针对您的问题的范围报告相关代码。

@AfterMethod
public synchronized void afterMethod(ITestResult result) {

StringBuilder inputArgs = new StringBuilder();
Object objects[] = result.getParameters();

for(Object obj : objects){
if(obj==null){
inputArgs.append(" ");
}else{
inputArgs.append(obj.toString());
}
inputArgs.append(" , ");
}

if (result.getStatus() == ITestResult.FAILURE)
test.get().fail(result.getThrowable()+ "Input Parameters : "+inputArgs.toString());
else if (result.getStatus() == ITestResult.SKIP)
test.get().skip(result.getThrowable() + "Input Parameters : "+inputArgs.toString());
else
test.get().pass( " Test Passed. Input parameters : " +inputArgs.toString());
extent.flush();
}

关于java - 在多线程中运行测试时,在测试可以使用 EndTest 安全结束之前调用关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53702245/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com