이를 수행하는 가장 쉬운 방법 (최소한의 새 코드 필요)은 테스트를 매개 변수화 된 테스트로 실행하는 것 @RunWith(Parameterized.class)
입니다. 이렇게하면 프레임 워크가 테스트를 10 번 실행합니다.
이 테스트는 클래스에서 유일한 테스트 여야합니다. 그렇지 않으면 모든 테스트 메서드가 클래스에서 10 번 실행되어야합니다.
다음은 그 예입니다.
@RunWith(Parameterized.class)
public class RunTenTimes {
@Parameterized.Parameters
public static Object[][] data() {
return new Object[10][0];
}
public RunTenTimes() {
}
@Test
public void runsTenTimes() {
System.out.println("run");
}
}
위의 경우 매개 변수없는 생성자로도 할 수 있지만 프레임 워크 작성자가 의도 한 것인지 아니면 향후 중단 될 것인지 확신 할 수 없습니다.
자체 러너를 구현하는 경우 러너가 테스트를 10 번 실행하도록 할 수 있습니다. 타사 실행기를 사용하는 경우 4.7에서는 새 @Rule
주석을 사용 하고 MethodRule
인터페이스를 구현 하여 문을 가져 와서 for 루프에서 10 번 실행하도록 할 수 있습니다. 이 방법의 현재 단점은 것입니다 @Before
그리고 @After
한 번만 실행하세요. 이것은 JUnit의 다음 버전에서 변경 될 가능성이 있지만 (는 @Before
이후에 실행될 것입니다 @Rule
),하지만 객체의 동일한 인스턴스 (실행자에게는 사실이 아닌 것)에서 작동하게 될 것입니다 Parameterized
. 이것은 클래스를 실행하는 주자가 @Rule
주석 을 올바르게 인식한다고 가정합니다 . JUnit 실행자에게 위임하는 경우에만 해당됩니다.
@Rule
주석을 인식하지 않는 사용자 지정 러너로 실행하는 경우 해당 러너에게 적절하게 위임하고 10 번 실행하는 자체 러너를 작성해야하는 데 정말 고착됩니다.
이 문제를 잠재적으로 해결할 수있는 다른 방법 (예 : Theories 러너)이 있지만 모두 러너가 필요합니다. 불행히도 JUnit은 현재 러너 레이어를 지원하지 않습니다. 그것은 다른 주자를 묶는 주자입니다.