2009-01-20 38 views
41

Tôi có một lớp cơ sở cho nhiều bài kiểm tra có một số phương thức trợ giúp mà tất cả chúng đều cần.Làm thế nào để có được Junit 4 bỏ qua một lớp thử nghiệm cơ bản?

Bản thân nó không có bất kỳ kiểm tra nào, nhưng JUnit (trong nhật thực) đang gọi người thử nghiệm trên đó và phàn nàn rằng không có phương pháp để kiểm tra.

Tôi làm cách nào để bỏ qua lớp học này?

Tôi biết tôi có thể thêm phương thức dummyTest có thể giải quyết được sự cố, nhưng nó cũng sẽ xuất hiện cho tất cả các lớp con.

Đề xuất?

+4

Tóm tắt BaseTest có phải không? – duffymo

+0

Đó là và vẫn được chạy –

+2

Xem câu hỏi tương tự: http://stackoverflow.com/questions/672466/junit-how-to-avoid-no-runnable-methods-in-test-utils-classes – Synox

Trả lời

67

Sử dụng chú thích @Ignore. Nó cũng hoạt động trên các lớp học. Xem này một:

@Ignore public class IgnoreMe { 
         @Test public void test1() { ... } 
         @Test public void test2() { ... } 
       } 

Ngoài ra, bạn có thể chú thích một lớp chứa phương pháp thử nghiệm với @Ignore và không ai trong số các bài kiểm tra có chứa sẽ được thực thi.

Nguồn: JUnit JavaDoc

+1

Tôi đồng ý rằng điều này sẽ hoạt động, vì vậy +1. Ngoại trừ với netbeans 6.2 và jUnit 4.5 @ignore được liệt kê là chỉ hợp lệ cho các Phương thức. –

+0

Tìm kiếm nó và Libary được gọi là 4.5 nhưng jar là junit4-1.jar lạ. Đã chấp nhận câu trả lời của bạn. Cảm ơn. –

+0

Bạn có thể chỉ cho tôi tham chiếu hợp lệ khi nó nói @Ignore là hợp lệ cho các phương thức chỉ từ junit 4.5? Tôi dường như không thể tìm thấy nó. – deepakraut

20

Cũng giống như một ghi chú, tôi luôn khuyên đưa ra lý do cho việc bỏ qua:

@Ignore("This test will prove bug #123 is fixed, once someone fixes it") 

Tôi hy vọng các junit định dạng báo cáo xml, được sử dụng khi chạy kiểm tra từ kiến, một ngày nào đó sẽ bao gồm số lượng bị bỏ qua (và lý do) cùng với lỗi, lỗi và lỗi.

+0

Tôi cũng mong đợi điều đó bây giờ. :) cảm ơn –

11

Làm cho lớp học abstract phải đủ cho JUnit 4. Nếu nó không hoạt động, hãy kiểm tra kỹ phiên bản JUnit bạn đang sử dụng.

Điều này cũng truyền đạt ý định của bạn rằng đây chỉ là một đoạn thử nghiệm.

Điều này cũng ngăn JUnit đếm các bài kiểm tra trong lớp là "bị bỏ qua" (vì vậy số lần kiểm tra bị bỏ qua cuối cùng sẽ là những gì bạn mong đợi).

Hoặc, đổi tên lớp. Hầu hết các vận động viên đều sử dụng tên lớp để xác định lớp nào là các bài kiểm tra và đó là những người trợ giúp. Trong Maven với các thiết lập mặc định, bạn chỉ cần phải chắc chắn rằng các lớp cơ sở không bắt đầu hoặc kết thúc với Test và không kết thúc với TestCase (http://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html)

+0

Sự kết hợp của @Ignore và trừu tượng là xuất sắc! – derekv

+0

Bạn không cần '@ Bỏ qua'. Tóm tắt là đủ (và tốt nhất theo ý kiến ​​của tôi) – Aenadon

+0

Với JUnit 4, 'abstract' là đủ. –

0

Có 2 lựa chọn:

  1. Bạn nên tạo lớp kiểm tra cơ sở trừu tượng, đủ để có được Junit4. Nếu bạn sử dụng thuộc tính @Igonre, nó sẽ hiển thị nó như một bài kiểm tra bị bỏ qua (và sẽ thêm nó vào tổng số bài kiểm tra).

  2. Bạn có thể thay đổi tên của lớp thử nghiệm nó sẽ không có từ Kiểm tra (phân biệt chữ hoa chữ thường) ở đầu hoặc cuối tên thử nghiệm hoặc từ TestCase ở cuối.

BTW: @Igonre là trường hợp sử dụng khác, khi bạn muốn bỏ qua một thử nghiệm cụ thể.

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