2011-04-03 3 views

Répondre

35

junit4 fournit une fonctionnalité parallèle à l'aide 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(){} 
    } 
} 
+1

Salut, Ceci est vraiment utile. mais, capable d'exécuter 4 classes seulement en parallèle à la fois même si j'ai plus de classes dans le tableau. Y a-t-il une limitation sur le nombre de classes fonctionnant en parallèle? – Santoshsarma

+12

Que se passe-t-il si je ne veux pas lister chaque classe de test (cela semble être une énorme douleur)? Y a-t-il un moyen de le faire automatiquement et de le faire fonctionner en parallèle? –

+1

Utile mais notez que les exceptions des tests ne sont pas automatiquement levées. Vous devez vérifier le résultat de 'runClasses'. –

-10

Voici quelques exemples de code. Cela fonctionne vraiment bien pour moi. 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 { 
    } 
} 
Questions connexes