2012-11-22 20 views
9

Mi chiedevo se è possibile eseguire test JUnit in parallelo in fase di definizione dei test parametrizzati. L'idea sarebbe quella di essere in grado di eseguirli come normali test JUnit in Eclipse.Esecuzione di test parametrizzati JUnit in parallelo in Eclipse

Il mio codice attuale è qualcosa di simile a:

@RunWith(Parameterized.class) 
public class JUnitDivideClassTests { 

    @Parameters 
    public static Collection<Object[]> data() { 

     return Arrays.asList(new Object[][] { { 12, 3, 4 }, { 12, 2, 6}, { 12, 4, 3 }}); 
    } 

    private int n; 
    private int d; 
    private int q; 

    public JUnitDivideClassTests(int n, int d, int q) { 

     this.n = n; 
     this.d = d; 
     this.q = q; 
    } 

    @Test 
    public void test() { 

     Assert.assertEquals(q, n/d); 
    } 
} 

come si trova @http://codemadesimple.wordpress.com/2012/01/17/paramtest_with_junit/

risposta

6

Dopo qualche ricerca, ho scoperto che ho dovuto implementare (o meglio, l'uso) il seguente codice:

public class ParallelizedParameterized extends Parameterized { 
    private static class ThreadPoolScheduler implements RunnerScheduler { 
     private ExecutorService executor; 

     public ThreadPoolScheduler() { 
      String threads = System.getProperty("junit.parallel.threads", "16"); 
      int numThreads = Integer.parseInt(threads); 
      executor = Executors.newFixedThreadPool(numThreads); 
     } 

     @Override 
     public void finished() { 
      executor.shutdown(); 
      try { 
       executor.awaitTermination(10, TimeUnit.MINUTES); 
      } catch (InterruptedException exc) { 
       throw new RuntimeException(exc); 
      } 
     } 

     @Override 
     public void schedule(Runnable childStatement) { 
      executor.submit(childStatement); 
     } 
    } 

    public ParallelizedParameterized(Class klass) throws Throwable { 
     super(klass); 
     setScheduler(new ThreadPoolScheduler()); 
    } 
} 

@http://hwellmann.blogspot.pt/2009/12/running-parameterized-junit-tests-in.html

+0

funziona, grazie –

Problemi correlati