Подтвердить что ты не робот

Как сделать тестовые примеры JUnit параллельными?

Возможный дубликат:
Параллельно выполняются тесты юнита?

Я обнаружил, что тестовые примеры внутри jUnit выполняются последовательно, как заставить их выполнять параллельно?

4b9b3361

Ответ 1

Junit4 предоставляет параллельную функцию с помощью ParallelComputer:

public class ParallelComputerTest {  

   @Test  
   public void test() {      
      Class[] cls={ParallelTest1.class,ParallelTest2.class };  

      //Parallel among classes  
      JUnitCore.runClasses(ParallelComputer.classes(), cls);  

      //Parallel among methods in a class  
      JUnitCore.runClasses(ParallelComputer.methods(), cls);  

      //Parallel all methods in all classes  
      JUnitCore.runClasses(new ParallelComputer(true, true), cls);     
   } 

   public static class ParallelTest1 {  
      @Test public void a(){}  
      @Test public void b(){}  
   }  

   public static class ParallelTest2 {  
      @Test public void a(){}  
      @Test public void b(){}  
   }  
} 

Ответ 2

Вот пример кода. Это работает для меня очень хорошо. ExecutorService.

public class TestCases {
    static ExecutorService exe ;
    public static void main(String[] args) throws Throwable {
        test1() ;
        test2() ;
        test3() ;
    }
    public static void test1() {
       exe = Executors.newCachedThreadPool() ;
       for (int i = 0 ; i < 10 ; i++) {
           Test1 test1 = new Test1() ;
           exe.execute(test1) ;
       }
       exe.shutdown() ;
       while(!exe.isShutDown()) {
       }
    }
   //same for test2 and test3
}

public class Test1 implements Runnable {
    public Test1() {
    }
    @Test
    public myTest throws Throwable {
    }
}