gpt4 book ai didi

java - 诱惑报告: Failed test written with Citrus displayed as ‘Broken’

转载 作者:行者123 更新时间:2023-11-30 05:32:57 24 4
gpt4 key购买 nike

我正在使用 Citrus 和 TestNG

当执行此测试(没有柑橘)时,Allure 很好地报告了失败测试

public class Ts_20X  extends TestNGCitrusTestDesigner {

@Test
public void test1() {
Assert.assertEquals(2, 3);
}
}

但是当我使用 Citrus 编写此测试时,Allure 报告了一个损坏的测试

public class Ts_20Y  extends TestNGCitrusTestDesigner
{
@Test
@Flaky
@CitrusTest
public void test3() {
fail("bad test");
}
}

查看日志,我可以看到这些差异:

[ERROR] test1(Ts_20X)  Time elapsed: 0.004 s  <<< FAILURE!
java.lang.AssertionError: expected [3] but found [2]
Ts_20X.test1(Ts_20X.java:16)

[ERROR] test3(Ts_20Y) Time elapsed: 0.004 s <<< FAILURE!
com.consol.citrus.exceptions.TestCaseFailedException: bad test
Caused by: com.consol.citrus.exceptions.CitrusRuntimeException: bad test

似乎 Allure 仅在抛出的异常为 java.lang.AssertionError

时才放置失败状态

对于 Citrus,我有另一个异常(exception),因此测试被破坏。

由于 Citrus testdesigner 无法添加 try...catch ,是否有其他解决方案可以向我的 Citrus 测试显示失败状态?

提前致谢。

最佳答案

解决方案是添加一个 testNG 监听器来捕获 Citrus 的特定错误异常,并将 citrus 错误嵌入到 AssertionError 中。

@Override
public void onTestFailure(ITestResult result) {
logger.info("Test failed on Citrus framework");
logger.info("Test failed on "+result.getMethod().getMethodName());
String classError = result.getThrowable().getClass().getName();
switch (classError) {
case "com.consol.citrus.exceptions.TestCaseFailedException":
result.setStatus(ITestResult.FAILURE);
AssertionError errorCast = new AssertionError(
result.getThrowable().getMessage(),
result.getThrowable()
);
result.setThrowable(errorCast);
logger.info("TestCaseFailedException embedded into AssertionError");
break;
}

}

该错误将被视为 AssertionError,并在 Allure 中显示为 Test Failed。

关于java - 诱惑报告: Failed test written with Citrus displayed as ‘Broken’ ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57181239/

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