【发布时间】:2016-06-01 17:30:52
【问题描述】:
我的 Maven 项目在执行测试时具有以下预期结果 (mvn test):
Tests run: 543, Failures: 0, Errors: 0, Skipped: 8
我正在探索并行运行这些测试的好处,看看我是否可以减少构建过程的总运行时间。
将以下设置添加到 Surefire 后:
<parallel>methods</parallel>
<threadCount>5</threadCount>
<perCoreThreadCount>true</perCoreThreadCount>
<forkCount>3C</forkCount>
<reuseFork>true</reuseFork>
跳过的测试的数量各不相同。请参阅以下 50 次处决的摘要:
01. Tests run: 543, Failures: 2, Errors: 176, Skipped: 8
... 34 runs with similar outputs...
35. Tests run: 543, Failures: 6, Errors: 173, Skipped: 8
36. **Tests run: 543, Failures: 2, Errors: 182, Skipped: 11**
37. **Tests run: 543, Failures: 2, Errors: 176, Skipped: 12**
38. Tests run: 543, Failures: 4, Errors: 177, Skipped: 8
39. Tests run: 543, Failures: 3, Errors: 175, Skipped: 8
40. Tests run: 543, Failures: 4, Errors: 174, Skipped: 8
41. Tests run: 543, Failures: 3, Errors: 172, Skipped: 8
42. Tests run: 543, Failures: 3, Errors: 172, Skipped: 8
43. **Tests run: 543, Failures: 2, Errors: 176, Skipped: 12**
44. Tests run: 543, Failures: 3, Errors: 176, Skipped: 8
... 5 runs with similar outputs...
50. Tests run: 543, Failures: 3, Errors: 172, Skipped: 8
虽然它发生在 3/50 的案例中,但我希望只在 Errors 和 Failures 中看到不同的数字,但在 Skipped 中永远不会看到。
对这个主题有什么想法吗?提前致谢。
编辑:
- Junit 版本:4.12
- Surefire 版本:2.18.1
【问题讨论】:
-
有意思,你的 JUnit 版本是多少?
-
@Tunaki 我用 JUnit 和 Surefire 版本编辑了我的帖子。它们分别是 4.12 和 2.18.1。
-
这看起来像是一个安全漏洞。我找不到现有的。你能尝试不同的
<parallel>值吗? -
所以我发现使用 JUnit 可以在动态上忽略测试。更多细节在这里:stackoverflow.com/questions/1689242/… 我认为这可能与我观察到的有关。我将详细了解这个额外的跳过测试发生了什么。否则它可能是一个错误。
-
不错的发现,也不知道。您是否在测试代码中使用假设?这可能是一个有效的解释。
标签: java maven junit maven-surefire-plugin