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 次 |
| 最近记录: |