Cách dễ nhất (với số lượng ít nhất là yêu cầu mã mới) để làm điều này là chạy thử nghiệm dưới dạng thử nghiệm tham số hóa (chú thích bằng một @RunWith(Parameterized.class)
và thêm một phương thức để cung cấp 10 tham số trống). Bằng cách đó, khuôn khổ sẽ chạy thử nghiệm 10 lần.
Bài kiểm tra này cần phải là bài kiểm tra duy nhất trong lớp, hay tốt hơn là tất cả các phương pháp kiểm tra cần được chạy 10 lần trong lớp.
Đây là một ví dụ:
@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");
}
}
Với những điều trên, bạn thậm chí có thể làm điều đó với một hàm tạo ít tham số, nhưng tôi không chắc liệu các tác giả khung có ý định như vậy hay không, hoặc liệu điều đó có bị phá vỡ trong tương lai hay không.
Nếu bạn đang thực hiện người chạy của riêng mình, thì bạn có thể để người chạy thử nghiệm 10 lần. Nếu bạn đang sử dụng trình chạy bên thứ ba, thì với 4.7, bạn có thể sử dụng @Rule
chú thích mới và triển khai MethodRule
giao diện để nó nhận câu lệnh và thực thi nó 10 lần trong một vòng lặp for. Nhược điểm hiện tại của phương pháp này là @Before
và chỉ @After
được chạy một lần. Điều này có thể sẽ thay đổi trong phiên bản tiếp theo của JUnit ( @Before
sẽ chạy sau @Rule
), nhưng bất kể bạn sẽ hành động trên cùng một phiên bản của đối tượng (điều gì đó không đúng với trình Parameterized
chạy). Điều này giả định rằng bất kỳ người chạy nào bạn đang chạy lớp với nó đều nhận ra chính xác các @Rule
chú thích. Đó chỉ là trường hợp nếu nó được ủy quyền cho những người chạy JUnit.
Nếu bạn đang chạy với một trình chạy tùy chỉnh không nhận ra @Rule
chú thích, thì bạn thực sự gặp khó khăn với việc phải viết trình chạy của riêng mình ủy quyền thích hợp cho Trình chạy đó và chạy nó 10 lần.
Lưu ý rằng có những cách khác để giải quyết vấn đề này (chẳng hạn như Trình chạy theo lý thuyết) nhưng tất cả đều yêu cầu người chạy. Rất tiếc, JUnit hiện không hỗ trợ các lớp người chạy. Đó là một vận động viên chạy dây chuyền các vận động viên khác.