가끔씩 실패하는 유닛 테스트가 있고 디버깅하는 것이 왜 때로는 실패하는지 모르기 때문에 고통 스럽다.Eclipse에서 JUnit 테스트 케이스를 여러 번 실행하는 방법
Eclipse 내에서 JUnit 테스트를 5 번 또는 50 번 실행하는 방법이 있습니까?
감사합니다.
가끔씩 실패하는 유닛 테스트가 있고 디버깅하는 것이 왜 때로는 실패하는지 모르기 때문에 고통 스럽다.Eclipse에서 JUnit 테스트 케이스를 여러 번 실행하는 방법
Eclipse 내에서 JUnit 테스트를 5 번 또는 50 번 실행하는 방법이 있습니까?
감사합니다.
테스트 데코레이터가 있습니다. 예를
@Test
@Repeat(10)
public void FailRandomlyNeedToKnowWhy() {
....
}
'RepeatedTest' 데코레이터는 JUnit에서 가져오고 코드 예제에는 Spring 어노테이션이 포함되어 있지 않습니까? – javanna
스프링에서만 작동합니다. –
시도해 보셨습니까?
@Test
public void runMultipleTests() {
for (int i = 0; i < 10; i++) {
myTestMethod();
}
}
아. 생각이 들었어. 내가 필사적이라면 나는 그것을 시도 할 수도있다. – Thom
에 대한 http://junit.org/apidocs/junit/extensions/RepeatedTest.html
에서 Junit와 API를 참조하십시오 난 그냥 (봄 당신이 얻은 대답 중 하나가 필요합니다) 추가 depedency을 필요로하지 않는 다음과 같은 해결책을 발견했다.
@Parameterized.Parameters
public static List<Object[]> data() {
return Arrays.asList(new Object[10][0]);
}
:
@RunWith(Parameterized.class)
그런 다음 빈 매개 변수의 숫자는 당신이 테스트를 실행할 횟수와 동일 제공하기 위해 다음과 같은 방법을 추가
Parameterized
러너와 함께 테스트를 실행
이렇게하면 루프를 작성하지 않아도됩니다. IntelliJ와 Eclipse는 모든 반복의 결과를 함께 그룹화합니다.
는 this solution에 영감 :
사용 @Repeat 주석과 같은 :
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;
}
public class MyTestClass {
@Rule
public RepeatRule repeatRule = new RepeatRule();
@Test
@Repeat(10)
public void testMyCode() {
//your test code goes here
}
}
당신은이 두 클래스를하기 만합니다
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 (this patch 포함 ).
무엇을 테스트하려고합니까? – Venki
내 방법 중 하나. – Thom
JUnit 3.x 또는 4.x? – mikej