在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
这样你甚至不必编写循环。 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 ( 包括此补丁 )。
- 如何从项目中查找未使用的Java类和JSP文件
- 在maven项目中使用JDBC连接到Athena
- 在eclipse IDE环境之外执行Eclipse插件(jdt / ast)
- Eclipse:以编程方式创建首选项页面
- Eclipse中的Java属性文件
- Eclipse条件断点。 如何检查是否发生exception?
- 在Eclipse Junit测试运行器中暂停未捕获的运行时exception
- AndroidRuntime引起:java.lang.unsatisfiedLinkError:无法加载tfp_jni:findLibrary返回null
- 在Eclipse上,“首选项 – >常规 – >工作区 – >使用本机挂钩或轮询刷新”是做什么的?