Testing 如何使侦听器中的TestNG测试失败

Testing 如何使侦听器中的TestNG测试失败,testing,testng,Testing,Testng,是否有一种方法可以从ITestListener实现中使已经成功通过的测试失败 我的用例是这样的:我运行套件中的所有测试,然后在套件的末尾执行一些额外的操作。作为这些操作的结果,我希望以前通过到现在的测试被标记为失败 在我的侦听器extends TestListenerAdapter中,我正在调用: result.setStatus(ITestResult.FAILURE); result.setThrowable(t); 在某些ITestResult对象上。在监听器的其他地方,我已经覆盖了on

是否有一种方法可以从ITestListener实现中使已经成功通过的测试失败

我的用例是这样的:我运行套件中的所有测试,然后在套件的末尾执行一些额外的操作。作为这些操作的结果,我希望以前通过到现在的测试被标记为失败

在我的侦听器extends TestListenerAdapter中,我正在调用:

result.setStatus(ITestResult.FAILURE);
result.setThrowable(t);
在某些ITestResult对象上。在监听器的其他地方,我已经覆盖了onFinish,如下所示:

当测试失败时,将执行回调。测试结果中添加了可丢弃项。一切都如我所料

但是,生成的报告和生成输出都不正确:

[testng] ===============================================
[testng] <redacted>Tests
[testng] Total tests run: 51, Failures: 0, Skips: 0
[testng] ===============================================
尽管其中3个测试结果被更新为失败:


有什么想法吗?

我成功地使用IInvokedMethodListener将状态从失败更改为跳过


状态可以更改的afterInvocation方法不会在整个测试套件完成后调用,而是在每个测试方法完成后调用。

我不太了解TestNG,但是当您在侦听器内部抛出异常时会发生什么?从侦听器内部抛出异常在套件失败的意义上起作用,这就是我想做的。我现在所做的是累积故障及其原因,如上图所示,然后在故障计数大于0时引发运行时异常。我只是担心,如果我升级我的TestNG版本,这是一种棘手的方法,最终会导致崩溃。
[testng] ===============================================
[testng] <redacted>Tests
[testng] Total tests run: 51, Failures: 0, Skips: 0
[testng] ===============================================