Có cách nào để xác định một teardown khác nhau cho mỗi @Test trong jUnit không?Tách rời khác nhau cho mỗi @Test trong jUnit
Trả lời
Sử dụng chú thích @After
để chỉ ra (các) phương pháp sẽ chạy sau mỗi @Test
.
Các bộ đầy đủ các chú thích như thế này là:
@BeforeClass
- trước khi tất cả@Tests
đang chạy@Before
- trước mỗi@Test
đang chạy@After
- sau mỗi@Test
đang chạy@AfterClass
- sau khi tất cả@Tests
đang chạy
Tôi vừa nhận ra mình có thể chưa hiểu câu hỏi. Nếu bạn đang yêu cầu làm thế nào để kết hợp một phương pháp teardown đặc biệt đến một phương pháp @Test Đặc biệt, không có nhu cầu cho chú thích: Đơn giản chỉ cần gọi nó là ở phần cuối của phương pháp thử nghiệm của bạn trong một cuối cùng:
@Test
public void someTest() {
try {
// test something
} finally {
someParticularTearDown();
}
}
Cảm ơn bạn. Đó là những gì tôi cần. – Daniel
Đây không phải là chính xác tối ưu vì bạn sẽ phải lặp lại mã này cho mỗi phương pháp thử nghiệm. –
Ví dụ cuối cùng chỉ để giải thích câu hỏi có thể - cá nhân tôi hiếm khi làm điều này, nhưng nó là lựa chọn đơn giản nhất mà tôi có thể nghĩ ra để có các phương pháp teardown khác nhau cho các @Tests khác nhau. – Bohemian
Mấu chốt của nhóm phương pháp thử nghiệm cùng nhau trong cùng một lớp là để họ có thể chia sẻ mọi thứ, bao gồm việc thiết lập và rách. Vì vậy, có, bạn có thể xác định teardowns riêng biệt cho mỗi bài kiểm tra, nhưng bạn làm như vậy bằng cách đặt các phương thức @Test trong các lớp khác nhau.
Khi bạn bắt đầu có các phương pháp tách riêng biệt, lý do lý do tại sao bạn muốn nhóm các thử nghiệm lại với nhau trong cùng một lớp không rõ ràng. Vì vậy, bạn có thể quản lý tình trạng này bằng cách linh hoạt về cách bạn nhóm các bài kiểm tra của bạn trong các lớp học.
Có, thay vào đó hãy cân nhắc đặt mã thiết lập và xé xuống bên trong phương thức '@ Test' của bạn. Tuy nhiên, hãy cẩn thận rằng mã tear-down được gọi ngay cả khi một ngoại lệ được ném, bằng cách sử dụng 'try' ...' finally'. – Raedwald
@Raedwald: vâng, cách tiếp cận của Bohemian là một cách để làm điều đó, nhưng bạn mất một số sức mạnh của khuôn khổ kể từ bây giờ bạn phải thêm một khối cuối cùng. –
Không có cách nào dễ dàng để thực hiện điều này trong JUnit. Với TestNG, bạn có thể đặt các phương thức của mình theo nhóm, vì vậy bạn có thể xác định @ BeforeMethod/@ AfterMethod cụ thể chỉ chạy quanh các nhóm nhất định.
- 1. Áp dụng '@Rule' sau mỗi '@Test' và trước mỗi '@After' trong JUnit
- 2. Junit: test query classes
- 3. Tách rời YAGNI
- 4. viết eclipse junit plugin test
- 5. Fragment getActivity() trả về null trong Activity JUnit test
- 6. Chọn khối rời nhau của mã trong Vim cho giật
- 7. Sử dụng các trình nạp lớp khác nhau cho các bài kiểm tra JUnit khác nhau?
- 8. Plugin Jenkins JUnit Test Result Report cho biết rằng tệp JUnit xml không được tìm thấy?
- 9. màu foreground khác nhau cho mỗi dòng trong wxPython wxTextCtrl
- 10. Sự khác nhau giữa db: test: clone, db: test: clone_structure, db: test: load, và db: test: preparation?
- 11. Nhận cột khác nhau trong mỗi hàng
- 12. Run Junit @Test mà bỏ qua @ Trước/@ Sau
- 13. Phím tắt cho Run As -> Android JUnit Test trong Eclipse
- 14. Sự nhầm lẫn JUnit: sử dụng 'extends TestCase' hoặc '@Test'?
- 15. Hibernate tải lười biếng trong các đối tượng tách rời
- 16. PHP - một open_basedir khác nhau cho mỗi máy chủ ảo
- 17. Các ứng dụng khác nhau cho mỗi không gian tên
- 18. mục triển khai khác nhau cho mỗi bài kiểm tra
- 19. Loại trừ các phương thức JUnit Test riêng lẻ mà không sửa đổi lớp Test?
- 20. Tạo chữ ký tách rời PKCS # 7
- 21. Bộ tách rời Mach-O của Linux
- 22. Lớp kiểm tra Junit với nhiều phương thức @Test
- 23. JUnit @Test mong đợi chú thích không làm việc
- 24. Loại bỏ các test kiểm tra JUnit dư thừa
- 25. Thêm các dấu phân tách khác nhau trong javascript toString() ..?
- 26. JUnit bỏ qua phương pháp @Test từ lớp cơ sở
- 27. Thêm trình điều hướng điều hướng vào chế độ xem chi tiết trong phần tách rời
- 28. Cách gọi một bài viết khác cho một bộ điều khiển khác trong Rails Functional Test
- 29. Entity Framework: ObjectContext.ExecuteStoreQuery tạo ra các đối tượng tách rời
- 30. HEAD Git/tách rời, tải lại công việc?
Tại sao không chỉ chú thích phương pháp teardown với '@ org.junit.After'? – Constantiner
@Constantiner Bởi vì nó chỉ là một phương pháp Sau cho tất cả các xét nghiệm. Và tôi phải chạy cho mỗi bài kiểm tra riêng của mình. – Daniel
@Daniel, Kiểm tra địa điểm trong các trường hợp thử nghiệm riêng biệt với các teardown chuyên dụng. – Constantiner