在Eclipse中,如何多次运行JUnit测试用例

我有时unit testing失败并且调试它是一种痛苦,因为我不知道为什么它有时会失败。

在Eclipse中有没有办法让我可以运行5次或50次JUnit测试?

谢谢。

有一个测试装饰器。 请参阅http://junit.org/apidocs/junit/extensions/RepeatedTest.html上的 Junit API

例如

@Test @Repeat(10) public void FailRandomlyNeedToKnowWhy() { .... } 

我刚刚找到了以下解决方案,它不需要任何额外的依赖性(你得到的答案之一需要Spring)。

使用Parameterized runner运行测试:

 @RunWith(Parameterized.class) 

然后添加以下方法以提供许多空参数等于您要运行测试的次数:

 @Parameterized.Parameters public static List data() { return Arrays.asList(new Object[10][0]); } 

这样你甚至不必编写循环。 IntelliJ和eclipse还将每次迭代的结果组合在一起。

你尝试过这样的事吗?

 @Test public void runMultipleTests() { for (int i = 0; i < 10; i++) { myTestMethod(); } } 

灵感来自这个解决方案 :

像这样使用@Repeat注​​释:

 public class MyTestClass { @Rule public RepeatRule repeatRule = new RepeatRule(); @Test @Repeat(10) public void testMyCode() { //your test code goes here } } 

你只需要这两个类:

Repeat.java:

 import static java.lang.annotation.ElementType.ANNOTATION_TYPE; import static java.lang.annotation.ElementType.METHOD; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Retention( RetentionPolicy.RUNTIME ) @Target({ METHOD, ANNOTATION_TYPE }) public @interface Repeat { int value() default 1; } 

RepeatRule.java:

 import org.junit.rules.TestRule; import org.junit.runner.Description; import org.junit.runners.model.Statement; public class RepeatRule implements TestRule { private static class RepeatStatement extends Statement { private final Statement statement; private final int repeat; public RepeatStatement(Statement statement, int repeat) { this.statement = statement; this.repeat = repeat; } @Override public void evaluate() throws Throwable { for (int i = 0; i < repeat; i++) { statement.evaluate(); } } } @Override public Statement apply(Statement statement, Description description) { Statement result = statement; Repeat repeat = description.getAnnotation(Repeat.class); if (repeat != null) { int times = repeat.value(); result = new RepeatStatement(statement, times); } return result; } } 

2016-10-25编辑:为了在使用@RunWith(PowerMockRunner.class)时使用此解决方案,请更新到Powermock 1.6.5 ( 包括此补丁 )。