Java Maven Surefire并行测试中跳过测试的非确定性行为
我有一个Maven项目,在执行测试时具有以下预期结果(Java Maven Surefire并行测试中跳过测试的非确定性行为,java,maven,junit,maven-surefire-plugin,Java,Maven,Junit,Maven Surefire Plugin,我有一个Maven项目,在执行测试时具有以下预期结果(mvn test): 我正在探索并行运行这些测试的好处,看看是否可以减少构建过程的总运行时间 将以下设置添加到Surefire后: <parallel>methods</parallel> <threadCount>5</threadCount> <perCoreThreadCount>true</perCoreThreadCount> <forkCount>
mvn test
):
我正在探索并行运行这些测试的好处,看看是否可以减少构建过程的总运行时间
将以下设置添加到Surefire后:
<parallel>methods</parallel>
<threadCount>5</threadCount>
<perCoreThreadCount>true</perCoreThreadCount>
<forkCount>3C</forkCount>
<reuseFork>true</reuseFork>
虽然这发生在3/50的案例中,但我希望只在错误
和失败
中看到不同的数字,但在跳过
中从未看到
对这个问题有什么想法吗?提前谢谢
编辑:
- Junit版本:4.12
- Surefire版本:2.18.1
Assume.assumeTrue(InetAddress.getAllByName(host).length > 1);
Assume.assumeNoException(x);
Assume.assumeTrue(sslContextFactory == null);
Assume.assumeNoException(x);
Assume.assumeTrue(OS.IS_LINUX);
Assume.assumeTrue(OS.IS_LINUX);
Assume.assumeTrue(!OS.IS_WINDOWS);
Assume.assumeTrue(!OS.IS_WINDOWS);
Assume.assumeThat(Integer.parseInt(nano), Matchers.greaterThan(21));
Assume.assumeTrue(false);
Assume.assumeTrue(true);
Assume.assumeTrue(false);
在这种情况下,我认为非确定性是由于并行运行测试时可能违反的假设造成的。有趣的是,您的JUnit版本是什么?@Tunaki我用JUnit和Surefire版本编辑了我的文章。它们分别是4.12和2.18.1。这看起来像是surefire中的一个bug。但我找不到现有的。您可以尝试使用不同的
值吗?因此我发现JUnit可以忽略测试。更多细节:我想这可能与我观察到的有关。我将详细了解这些额外跳过的测试的结果。否则它可能是个虫子。很好的发现,我也不知道。您是否在测试代码中使用假设?这可能是一个合理的解释。
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
Assume.assumeTrue(InetAddress.getAllByName(host).length > 1);
Assume.assumeNoException(x);
Assume.assumeTrue(sslContextFactory == null);
Assume.assumeNoException(x);
Assume.assumeTrue(OS.IS_LINUX);
Assume.assumeTrue(OS.IS_LINUX);
Assume.assumeTrue(!OS.IS_WINDOWS);
Assume.assumeTrue(!OS.IS_WINDOWS);
Assume.assumeThat(Integer.parseInt(nano), Matchers.greaterThan(21));
Assume.assumeTrue(false);
Assume.assumeTrue(true);
Assume.assumeTrue(false);