Java 在Eclipse中,如何多次运行JUnit测试用例
我有一个单元测试有时会失败,调试它是一件痛苦的事情,因为我不知道为什么它有时会失败 在Eclipse中有没有一种方法可以让我运行JUnit测试5次或50次Java 在Eclipse中,如何多次运行JUnit测试用例,java,eclipse,junit,Java,Eclipse,Junit,我有一个单元测试有时会失败,调试它是一件痛苦的事情,因为我不知道为什么它有时会失败 在Eclipse中有没有一种方法可以让我运行JUnit测试5次或50次 谢谢。你试过这样的东西吗 @Test public void runMultipleTests() { for (int i = 0; i < 10; i++) { myTestMethod(); } } @测试 public void runMultipleTests(){ 对于(int i=0;i
谢谢。你试过这样的东西吗
@Test
public void runMultipleTests() {
for (int i = 0; i < 10; i++) {
myTestMethod();
}
}
@测试
public void runMultipleTests(){
对于(int i=0;i<10;i++){
myTestMethod();
}
}
这有一个测试装饰程序。请参阅
比如说
@Test
@Repeat(10)
public void FailRandomlyNeedToKnowWhy() {
....
}
我刚刚找到了以下解决方案,它不需要任何额外的依赖性(您得到的答案之一需要Spring) 使用
参数化运行程序运行测试:
@RunWith(Parameterized.class)
然后添加以下方法,以提供与要运行测试的次数相等的空参数数:
@Parameterized.Parameters
public static List<Object[]> data() {
return Arrays.asList(new Object[10][0]);
}
@Parameterized.Parameters
公共静态列表数据(){
返回Arrays.asList(新对象[10][0]);
}
这样,您甚至不必编写循环。IntelliJ和eclipse还将每次迭代的结果分组在一起。灵感来自:
使用@Repeat注释如下:
公共类MyTestClass{
@统治
public RepeatRule RepeatRule=新RepeatRule();
@试验
@重复(10)
公共空testMyCode(){
//你的测试代码在这里
}
}
您只需要这两个类:
Repeat.java:
导入静态java.lang.annotation.ElementType.annotation\u类型;
导入静态java.lang.annotation.ElementType.METHOD;
导入java.lang.annotation.Retention;
导入java.lang.annotation.RetentionPolicy;
导入java.lang.annotation.Target;
@保留(RetentionPolicy.RUNTIME)
@目标({方法,注释类型})
公共@接口重复{
int value()默认值为1;
}
RepeatRule.java:
import org.junit.rules.TestRule;
导入org.junit.runner.Description;
导入org.junit.runners.model.Statement;
公共类RepeatRule实现TestRule{
私有静态类RepeatStatement扩展语句{
非公开最终声明;
私人最终整数重复;
公共重复语句(语句语句,int repeat){
这个。声明=声明;
这个。重复=重复;
}
@凌驾
public void evaluate()可丢弃{
for(int i=0;i
2016-10-25编辑:
为了在使用@RunWith(PowerMockRunner.class)
时使用此解决方案,请更新到(其中包括)。您试图测试的是什么?如果单元测试“有时”失败,则毫无用处。我的也是。这就是为什么我想修复它。我需要运行多次才能诊断问题。@Thom:抱歉,误解了您的问题。您也可以使用注释@Repeat(5)运行五次ahhh。有一个想法。如果我不顾一切的话,我可能会尝试这样做。RepeatedTest
decorator来自JUnit,而您的代码示例包含一个Spring注释,不是吗?