2012-05-02 36 views
13

Đây là những testcases tôiDừng thử nghiệm JUnit trong phương pháp @Before mà không thất bại

class Mother { 

    @Before 
    public void setUp() { 
     if (!this.getClass().isAnnotatedWith("Version20")) { // pseudo code 
      /* 
      * stop this test without failing! 
      */ 
     } 

     // further setup 
    } 
} 


@Version20 
class Child extends Mother { 

    @Test 
    public void test() { 
     // run only when Version == 20 
    } 
} 

Có thể ngăn chặn các thử nghiệm trong Child trong phương pháp @Before của Mẹ mà không thất bại hoặc assertTrue (sai)?

chỉnh sửa: Tôi có nhiều phiên bản @ Version19, @ Version18, v.v. phần mềm của tôi đang đọc cấu hình và xuất kết quả một số thử nghiệm chỉ áp dụng cho các phiên bản đặc biệt. Tôi không muốn kiểm tra phiên bản trong phương pháp thử vì tôi có nhiều thử nghiệm nhỏ và không thích sao chép mã

+4

Tại sao không chỉ sử dụng '@ ignore', nếu bạn định chú thích các bài kiểm tra? – weltraumpirat

+0

Làm thế nào về việc thêm kiểm tra cho Version20 trong phương pháp thử nghiệm? –

+0

có thể trùng lặp của [Điều kiện bỏ qua các thử nghiệm trong JUnit 4] (http://stackoverflow.com/questions/1689242/conditionally-ignoring-tests-in-junit-4) – oers

Trả lời

17

Tôi đã hỏi similar question trước đây - kết quả là bạn có thể sử dụng lớp Assume 'phương pháp để tắt thử nghiệm dựa trên kiểm tra thời gian chạy (trong khi @Ignore là điều kiện tĩnh).

Điều đó nói rằng, nếu bạn đang luôn tắt vô hiệu hóa chúng dựa trên chú thích cụ thể, có vẻ như bạn không thực sự cần thực hiện việc này trong thời gian chạy. Chỉ cần chú thích các lớp học với @Ignore cũng như @Version20 sẽ thực hiện công việc và sẽ rõ ràng hơn.

Mặc dù tôi nghi ngờ bạn có thể bỏ qua chỉ khi thử nghiệm đang chạy trong "1.0 mode" - trong trường hợp này nó là một mẫn chạy, và bạn có thể làm điều này với một cái gì đó như:

@Before 
public void setUp() { 
    if (!this.getClass().isAnnotatedWith("Version20")) { 
     final String version = System.getProperty("my.app.test.version"); 
     org.junit.Assume.assumeTrue(version.equals("2.0")); 
    } 
} 
+0

Cảm ơn, chính xác những gì tôi đang tìm kiếm! –

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