dev*_*ium 9 java eclipse junit
我想知道在定义参数化测试时是否可以以编程方式运行JUnit测试.我们的想法是能够像在Eclipse中进行常规JUnit测试一样运行它们.
我目前的代码类似于:
@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);
    }
}
Run Code Online (Sandbox Code Playgroud)
发现@ http://codemadesimple.wordpress.com/2012/01/17/paramtest_with_junit/
经过一番搜索,我发现我只需要实现(或者更确切地说,使用)以下代码:
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());
    }
}
Run Code Online (Sandbox Code Playgroud)
@ http://hwellmann.blogspot.pt/2009/12/running-parameterized-junit-tests-in.html
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           2782 次  |  
        
|   最近记录:  |