简体   繁体   English

在Eclipse中并行运行JUnit参数化测试

[英]Running JUnit parameterized tests in Parallel in Eclipse

I was wondering if it's possible to run JUnit tests programatically in parallel when defining parameterized tests. 我想知道在定义参数化测试时是否可以以编程方式运行JUnit测试。 The idea would be to then be able to run them just as regular JUnit tests in Eclipse. 我们的想法是能够像在Eclipse中进行常规JUnit测试一样运行它们。

My current code is something similar to: 我目前的代码类似于:

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

as found @ http://codemadesimple.wordpress.com/2012/01/17/paramtest_with_junit/ 发现@ http://codemadesimple.wordpress.com/2012/01/17/paramtest_with_junit/

After some searching, I found that I just had to implement (or rather, use) the following code: 经过一番搜索,我发现我只需要实现(或者更确切地说,使用)以下代码:

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 @http://hwellmann.blogspot.pt/2009/12/running-parameterized-junit-tests-in.html

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM