Có cách nào để yêu cầu JUnit chạy một trường hợp thử nghiệm cụ thể nhiều lần với dữ liệu khác nhau liên tục trước khi tiếp tục với trường hợp thử nghiệm tiếp theo không?Chạy cùng một trường hợp thử nghiệm JUnit nhiều lần với các dữ liệu khác nhau
Trả lời
hãy xem để junit 4.4 theories:
import org.junit.Test;
import org.junit.experimental.theories.*;
import org.junit.runner.RunWith;
@RunWith(Theories.class)
public class PrimeTest {
@Theory
public void isPrime(int candidate) {
// called with candidate=1, candidate=2, etc etc
}
public static @DataPoints int[] candidates = {1, 2, 3, 4, 5};
}
Tôi có vài trường hợp thử nghiệm theo định dạng như testxyz(), testpqr(). Lớp thử nghiệm hiện tại của tôi mở rộng TestCase. – Giridhar
Thos không chạy nếu tôi đang định dạng này. – Giridhar
đầu tiên bạn phải chuyển đổi chúng sang JUnit 4 (bằng cách sử dụng chú thích @Test, trong hầu hết các trường hợp) – dfa
Tôi luôn chỉ thực hiện một phương thức trợ giúp thực thi phép thử dựa trên các tham số, và sau đó gọi phương thức đó từ phương thức kiểm tra JUnit. Bình thường, điều này có nghĩa là một phương pháp thử nghiệm JUnit đơn lẻ sẽ thực sự thực hiện nhiều thử nghiệm, nhưng đó không phải là vấn đề đối với tôi. Nếu bạn muốn có nhiều phương thức thử, một phương thức cho mỗi lời gọi riêng biệt, tôi khuyên bạn nên tạo lớp thử nghiệm.
Có vẻ như đó là một ứng cử viên hoàn hảo cho các bài kiểm tra tham số.
Nhưng, về cơ bản, các thử nghiệm được tham số cho phép bạn chạy cùng một bộ kiểm tra trên các dữ liệu khác nhau.
Dưới đây là một số bài đăng trên blog tốt về nó:
Đây là một bài tôi đã viết cho thấy một số cách chạy các bài kiểm tra nhiều lần với các ví dụ mã:
Bạn có thể sử dụng Á hậu @Parametrized hoặc sử dụng nhân vật đặc biệt có trong bài đăng
gần đây tôi đã bắt đầu dự án zohhak. nó cho phép bạn viết:
@TestWith({
"25 USD, 7",
"38 GBP, 2",
"null, 0"
})
public void testMethod(Money money, int anotherParameter) {
...
}
Nếu bạn không muốn hoặc không thể sử dụng tùy chỉnh Á hậu (. ví dụ như bạn đang sử dụng một Á hậu khác, như Robolectric Á hậu), bạn có thể thử DataSet Rule này.
Một cách tốt hơn (cho phép bạn có nhiều hơn một phương pháp thử nghiệm) là sử dụng JUnit với JUnitParams:
import junitparams.Parameters;
import org.junit.Test;
@RunWith(JUnitParamsRunner.class)
Public class TestClass() {
@Test
@Parameters(method = "generateTestData")
public void test1(int value, String text, MyObject myObject) {
... Test Code ...
}
.... Other @Test methods ....
Object[] generateTestData() {
MyObject objectA1 = new MyObject();
MyObject objectA2 = new MyObject();
MyObject objectA3 = new MyObject();
return $(
$(400, "First test text.", objectA1),
$(402, "Second test text.", objectA2),
$(403, "Third test text.", objectA3)
);
}
}
Bạn có thể lấy junitparams dự án here.
Nếu bạn đang sử dụng @RunWith
trong lớp thi của mình, bạn có thể cần xem this.
2018-01-19 downvote. Xin vui lòng có lịch sự để giải thích suy nghĩ của bạn. Bạn có thể học được điều gì đó. –
- 1. Trong Eclipse, làm thế nào để chạy một trường hợp thử nghiệm JUnit nhiều lần
- 2. Sau khi chạy thử trường hợp junit, tôi có nên xóa dữ liệu thử nghiệm liên quan đến trường hợp thử nghiệm này không?
- 3. Chạy thử nghiệm PHPUnit nhiều lần
- 4. Trường hợp thử nghiệm junit máy phát điện
- 5. Quản lý dữ liệu thử nghiệm cho các thử nghiệm của Junit
- 6. Thư mục dữ liệu thử nghiệm với jUnit
- 7. Chạy thử nghiệm với hơn một triệu trường hợp thử nghiệm
- 8. Chạy thử nghiệm JUnit song song
- 9. Chạy thử nghiệm JUnit từ nhiều dự án trong Eclipse
- 10. Có thể chạy thử nghiệm đơn vị Rails trên môi trường khác với thử nghiệm không?
- 11. Scalatest hoặc specs2 với nhiều trường hợp thử nghiệm
- 12. Trường hợp thử nghiệm Spring JUnit không thành công
- 13. Tổng hợp nhiều trường hợp thử nghiệm từ nhiều mô-đun để chạy trong PyDev TestRunner
- 14. Lặp lại thử nghiệm chạy thử nhiều lần
- 15. Tích hợp các trường hợp thử nghiệm PHPT với PHPUnit
- 16. Có thể tạo các trường hợp và bộ thử nghiệm JUnit theo cách lập trình không?
- 17. Java Robotium Android - Chạy cùng một thử nghiệm đồng thời trên hai thiết bị khác nhau
- 18. Ant, chạy tất cả JUnit thử nghiệm
- 19. Các trường hợp thử nghiệm với JIRA hoặc Confluence
- 20. Cách lấy tên trường hợp thử nghiệm trong JUnit 4 khi chạy?
- 21. Sự khác biệt trong các lớp trường hợp thử nghiệm Android khác nhau là gì?
- 22. Junit nhiều thiết lập và thử nghiệm duy nhất
- 23. Cách đăng nhập kết quả chạy thử junit vào cơ sở dữ liệu
- 24. Giả lập phương thức tĩnh nhiều lần bằng JMockit trong thử nghiệm JUnit
- 25. JUnit chạy thử nghiệm bên trong một JAR
- 26. Cách kiểm tra với hai trang web hoạt động trong cùng một thử nghiệm với các môi trường khác nhau (vì vậy các URL khác nhau)
- 27. Chạy Android thử nghiệm thiết lập() được gọi nhiều lần
- 28. Làm cách nào để chạy nhiều trường hợp thử nghiệm Python trong một vòng lặp?
- 29. Lỗi thời gian chạy khi JUnit thử nghiệm
- 30. JUnit 4: Thiết lập mọi thứ trong một bộ thử trước khi chạy thử nghiệm (như phương pháp @BeforeClass của thử nghiệm, chỉ dành cho bộ thử nghiệm)
Bằng cách sử dụng lý thuyết (như được chỉ ra bởi @dfa) Junit sẽ xử lý tất cả các bài kiểm tra dưới dạng một bài kiểm tra và sẽ làm cho khó hơn để tìm ra bài kiểm tra nào đã thất bại. Trong khi các thử nghiệm tham số (như được chỉ ra bởi @ jjnguy) coi tất cả chúng là các thử nghiệm khác nhau, hãy chỉ rõ thử nghiệm nào không thành công. – mindreader