2012-11-22 9 views
9

में समांतर में जुनीट पैरामीटर परीक्षण चला रहा था, मैं सोच रहा था कि पैरामीटर परीक्षणों को परिभाषित करते समय प्रोग्रामिंग रूप से समानांतर में जुनीट परीक्षण चलाने के लिए संभव है या नहीं। विचार तब उन्हें ग्रहण में नियमित जुनीट परीक्षण के रूप में चलाने में सक्षम होना होगा।ग्रहण

मेरे वर्तमान कोड के लिए कुछ इसी तरह है:

@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); 
    } 
} 

के रूप में @http://codemadesimple.wordpress.com/2012/01/17/paramtest_with_junit/

उत्तर

6

पाया कुछ खोज के बाद, मैं (या बल्कि, उपयोग) में पाया गया कि मैं सिर्फ लागू करने के लिए किया था निम्नलिखित कोड:

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

यह काम करता है, धन्यवाद –