Surefire无法正确处理成功百分比

时间:2012-03-02 19:16:01

标签: maven testng surefire

我有一个等待测试,我希望有时会因为测试线程太不同步而失败。所以我设置successPercentageinvocationCount来处理偶尔可接受的失败。如果代码被破坏,则任何调用都不会通过。

当我在IntelliJ中运行测试时,一切都很好。但是当我尝试在maven中构建时,我得到以下内容

Tests run: 1407, Failures: 0, Errors: 1, Skipped: 0

[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] There are test failures.

查看restng-results.xml,我看到了:

<test-method status="SUCCESS_PERCENTAGE_FAILURE" signature="waits()" name="waits" duration-ms="1000" started-at="2012-03-02T13:51:58Z" finished-at="2012-03-02T13:51:59Z">

在TEST-TestSuite.xml中,我看到:

<testcase classname="com.casenet.integration.filesystem.TriggerFileListenerTest" time="1" name="waits">
  <error type="java.lang.AssertionError" message="expected:&lt;EXECUTE&gt; but was:&lt;TIMED_OUT&gt;">java.lang.AssertionError: expected:&lt;EXECUTE&gt; but was:&lt;TIMED_OUT&gt;

其余的testng生成的文件似乎认为一切都通过了。但是,看起来像SUCCESS_PERCENTAGE_FAILURE<error/>元素的混乱让人误以为某些事情出了问题,实际上并没有发生意外事件。

任何人都知道这是一个已知问题还是有可用的解决方案?

2 个答案:

答案 0 :(得分:3)

更新:此问题的修复已进入发布版本6.8.17。我已经相应地编辑了我的答案。


我知道我在这里挖掘一个旧问题,但看起来我们已经解决了这个问题,我可以想象人们想知道这个。要使用此修复程序,您需要SureFire 2.18和至少TestNG 6.8.17。

您可以参考以下错误报告以获取完整的信息背景故事:

https://jira.codehaus.org/browse/SUREFIRE-654关于初始问题,与@Raghuram的答案相关联。简短版本:SureFire报告了漏报。

https://jira.codehaus.org/browse/SUREFIRE-1113我在SUREFIRE-654的修复程序中报告了一个错误。事实证明,这不是一个SureFire问题,而是一个在版本5.14(2010年!)中引入的TestNG错误。简短版本:SureFire(我认为)报告了误报。

https://github.com/cbeust/testng/issues/566用于实际的TestNG错误,由Vladislav Rassokhin修复并最近合并到一个版本中。简短版本:TestNG实际上创建了误报,然后被SureFire解析为成功的测试。

答案 1 :(得分:1)

看起来这里有一个open surefire bug,它似乎也有补丁和解决方法。