在Maven構建中并行運行junit測試?我使用的是JUnit 4.4和Maven,還有大量的長期運行的集成測試。當涉及并行化測試套件時,有幾種解決方案允許我在單個測試類中并行運行每個測試方法。但所有這些都要求我以一種或另一種方式改變測試。我真的認為在X線程中并行運行X不同的測試類將是一個更干凈的解決方案。我有數(shù)百個測試,所以我不關心線程個別的測試類。有什么辦法嗎?
3 回答

互換的青春
TA貢獻1797條經驗 獲得超6個贊
<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>

月關寶盒
TA貢獻1772條經驗 獲得超5個贊
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); } } }); }}
參數(shù)化.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
提交
取消