在Maven構建中并行運行junit測試?我使用的是JUnit 4.4和Maven,還有大量的長期運行的集成測試。當涉及并行化測試套件時,有幾種解決方案允許我在單個測試類中并行運行每個測試方法。但所有這些都要求我以一種或另一種方式改變測試。我真的認為在X線程中并行運行X不同的測試類將是一個更干凈的解決方案。我有數百個測試,所以我不關心線程個別的測試類。有什么辦法嗎?
3 回答
HUWWW
TA貢獻1874條經驗 獲得超12個贊
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.7.1</version> <configuration> <parallel>classes</parallel> <threadCount>5</threadCount> </configuration> </plugin> </plugins></build>
慕桂英4014372
TA貢獻1871條經驗 獲得超13個贊
躍然一笑
TA貢獻1826條經驗 獲得超6個贊
Par等位Suite.java
public class ParallelSuite extends Suite {
public ParallelSuite(Class<?> klass, RunnerBuilder builder) throws InitializationError {
super(klass, builder);
setScheduler(new RunnerScheduler() {
private final ExecutorService service = Executors.newFixedThreadPool(4);
public void schedule(Runnable childStatement) {
service.submit(childStatement);
}
public void finished() {
try {
service.shutdown();
service.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
} catch (InterruptedException e) {
e.printStackTrace(System.err);
}
}
});
}}參數化.java
public class ParallelParameterized extends Parameterized {
public ParallelParameterized(Class<?> arg0) throws Throwable {
super(arg0);
setScheduler(new RunnerScheduler() {
private final ExecutorService service = Executors.newFixedThreadPool(8);
public void schedule(Runnable childStatement) {
service.submit(childStatement);
}
public void finished() {
try {
service.shutdown();
service.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
} catch (InterruptedException e) {
e.printStackTrace(System.err);
}
}
});
}}@RunWith(ParallelSuite.class)@SuiteClasses({ATest.class, BTest.class, CTest.class})public class ABCSuite {}添加回答
舉報
0/150
提交
取消
