2011-10-27 41 views
9

Tôi muốn tạo chú thích JUnit tùy chỉnh, một cái gì đó tương tự như thẻ được mong đợi trong @Test, nhưng tôi cũng muốn kiểm tra thông báo chú thích.JUnit chú thích tùy chỉnh

Bất kỳ gợi ý nào về cách thực hiện điều đó hoặc có thể đã có thứ gì đó sẵn sàng?

Trả lời

4

JUnit 4.9 thắt chặt việc sử dụng "quy tắc" của thư viện cho các bài kiểm tra, mà tôi cho rằng có thể hoạt động cũng như chú thích tùy chỉnh. Hãy xem TestRule làm điểm bắt đầu. Bạn có thể triển khai một quy tắc dựa trên giao diện đó, và sau đó sử dụng chú thích @ClassRule hoặc (phương thức cấp) @Rule để đưa chúng vào trong các thử nghiệm của bạn.

Ví dụ cụ thể tốt là ExpectedException, cho phép bạn chỉ định ngoại lệ như thông số dự kiến ​​cho @Test thực hiện (và sau đó là một số).

4

Để JUnit4 nhận chú thích tùy chỉnh của bạn, bạn cần phải viết triển khai Runner tùy chỉnh của riêng bạn, sau đó cung cấp chú thích đó cho chú thích RunWith trên lớp Kiểm tra.

Bạn có thể bắt đầu bằng cách xem xét BlockJUnit4ClassRunner, đây là Á hậu triển khai mặc định cho JUnit 4 (nếu bộ nhớ phục vụ tốt cho tôi).

Giả sử bạn muốn nhặt một chú thích cho khách hàng là @MyTest với một Á hậu MyRunner tùy chỉnh, lớp thử nghiệm của bạn sẽ giống như thế:

@RunWith(MyRunner.class) 
class Tests { 
    ... 
    @MyTest 
    public void assumeBehaviour() { 
     ... 
    } 
} 

Câu trả lời bởi "Reid Mac" làm một công việc khá tốt giải thích cách chú thích tùy chỉnh được triển khai.

+6

Không còn câu trả lời "Reid Mac" nữa .. – BrunoJCM

1

Bạn có thể tạo tùy chỉnh TestRule như được đề cập trong câu trả lời đầu tiên hoặc bạn có thể sử dụng/mở rộng TestWatcher đã có phương pháp xử lý bắt đầu/kết thúc thử nghiệm. Có một phương pháp apply(Statement base, Description description) nơi mô tả thực sự là trình bao bọc xung quanh phương pháp thử nghiệm của bạn. Description có phương pháp tuyệt vời getAnnotation(annotationClass) sẽ cho phép bạn thực hiện những gì bạn muốn bằng cách chỉ định chú thích tùy chỉnh mà bạn muốn xử lý

Các vấn đề liên quan