gpt4 book ai didi

junit4 - 肯定会忽略并行线程计数(JUnit 4)

转载 作者:行者123 更新时间:2023-12-04 23:41:30 25 4
gpt4 key购买 nike

我已经看到很多关于与 maven surefire 并行运行 JUnit 测试的主题,但我还没有看到处理这个特定问题的答案。

简而言之:测试方法是并行执行的(那里是个好消息),但 Prop 不会限制我的线程。最终目标是并行化我的 web 驱动程序和 appium 运行,但我希望能够首先控制所有可能的线程。

下面的代码片段来自一个仅用于演示的虚拟项目。关注 apache documentation ,看起来没有比下面更多的东西了。

pom.xml

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<parallel>methods</parallel>
<threadCountMethods>2</threadCountMethods>
</configuration>
</plugin>
</plugins>
</build>

ExampleTest.class
public class ExampleTest {

@Test
public void one() throws InterruptedException {
Thread.sleep(5000);
}

@Test
public void two() throws InterruptedException {
Thread.sleep(5000);
}

@Test
public void three() throws InterruptedException {
Thread.sleep(5000);
}

@Test
public void four() throws InterruptedException {
Thread.sleep(5000);
}

@Test
public void five() throws InterruptedException {
Thread.sleep(5000);
}

@Test
public void six() throws InterruptedException {
Thread.sleep(5000);
}

@Test
public void seven() throws InterruptedException {
Thread.sleep(5000);
}

@Test
public void eight() throws InterruptedException {
Thread.sleep(5000);
}

@Test
public void nine() throws InterruptedException {
Thread.sleep(5000);
}

@Test
public void ten() throws InterruptedException {
Thread.sleep(5000);
}
}

我希望使用提供的 pom 配置完整运行这个类需要多于 25 秒(10 个 sleep 5 秒,一次运行两个)。实际运行时间是 5 秒多一点:
Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.022 sec - in ExampleTest

更改该 threadCountMethods Prop 对运行时没有影响(看起来所有方法都在并行运行,而不考虑 threadCount Prop )。

任何投入将不胜感激;谢谢!

最佳答案

因此,经过更多挖掘,我发现了一个名为 perCoreThreadCount 的小属性。找到 here .如果未指定,则该 Prop 默认为 true .我的机器上共有 8 个内核,每个内核 2 个线程(来自问题中的原始 pom 配置)意味着最多 16 个样本测试可以在 5 秒内运行。将该 Prop 和设置值添加到 false在 pom 中解决了所有麻烦!

关于junit4 - 肯定会忽略并行线程计数(JUnit 4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35949828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com