首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TestNG集测试状态

TestNG集测试状态
EN

Stack Overflow用户
提问于 2018-10-08 23:13:58
回答 1查看 1.1K关注 0票数 0

我有一个定制的报告和断言解决方案,这正是我希望它的工作方式,但是gradle并没有正确地将测试标记为失败。对我来说,最简单的解决方案是,只要我的断言得到解决,就只需在testNG中将测试标记为失败,因此它将在gradle中将其标记为失败。我使用以下方法设置了测试状态:

代码语言:javascript
运行
复制
Reporter.getCurrentTestResult().setStatus(ITestResult.FAILURE);

但是,在@Test方法结束后,它正在恢复

代码语言:javascript
运行
复制
@Test
public void assertionsFail(){
  //Custom assertion fails
  generalAssertion(new AssertionPayload(false));
  //Let testNG know that test failed
  Reporter.getCurrentTestResult().setStatus(ITestResult.FAILURE);
  //Marked as failed here, Reporter.getCurrentTestResult() returns 2
}

@AfterMethod(alwaysRun = true)
public void afterTest(ITestResult testResult) {
  //Why is it marked as passed here? Reporter.getCurrentTestResult() returns 1

}

在测试方法结束时,我确认状态设置为失败。但是,当它到达My@AfterTest时,由于某种原因,它不再被设置为失败,而是设置为通过。这里有什么简单的东西吗?是否有一种简单的方法简单地将测试标记为失败?我已经研究过用失败来制造一个softAssert,但这确实很简陋,也不太理想。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-11 16:51:30

我对testNG的代码做了一些深入研究,并了解到setStatus在测试完成后被多次调用。testNG似乎读取任何可抛出的数据,然后相应地设置状态。通过这样做,我能够得到想要的行为:

代码语言:javascript
运行
复制
        Throwable throwable = new Throwable("One or more tests in this group has failed");
        throwable.setStackTrace(new StackTraceElement[0]);
        Reporter.getCurrentTestResult().setThrowable(throwable);

我还删除了堆栈跟踪,因为它只是指向我的断言的位置,而且没有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52711239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档