2009-07-19 42 views
26

Tôi có trường hợp thử nghiệm sau đây trong nhật thực, bằng cách sử dụng JUnit 4 không chịu chuyển. Điều gì có thể sai?Thẻ dự kiến ​​JUnit không hoạt động như mong đợi

@Test(expected = IllegalArgumentException.class) 
public void testIAE() { 
    throw new IllegalArgumentException(); 
} 

Lần kiểm tra chính xác này xảy ra khi cố gắng kiểm tra mã của riêng tôi bằng thẻ dự kiến ​​không hoạt động. Tôi muốn xem liệu JUnit có vượt qua được bài kiểm tra cơ bản nhất hay không. Nó không.

Tôi cũng đã thử nghiệm với các ngoại lệ tùy chỉnh như mong đợi mà không có may mắn.

Ảnh chụp màn hình: Screenshot http://www.freeimagehosting.net/uploads/6a995b0db7.png

+2

Điều này thực sự lạ, đã tự kiểm tra và mã này chạy tốt (thử nghiệm thành công) ... – Torandi

+0

Tôi đã thêm ảnh chụp màn hình, chỉ để hiển thị ... Tôi cũng sẽ nghi ngờ. –

Trả lời

71

Vấn đề là AnnounceThreadTest của bạn mở rộng TestCase. Bởi vì nó mở rộng TestCase, JUnit Runner đang xử lý nó như là một thử nghiệm JUnit 3.8 và thử nghiệm đang chạy vì nó bắt đầu bằng kiểm tra từ, che giấu thực tế rằng chú thích @Test thực ra không được sử dụng chút nào.

Để khắc phục điều này, hãy xóa "extends TestCase" khỏi định nghĩa lớp học.

+0

Cảm ơn bạn, điều này cố định nó như quảng cáo. –

+4

Sau khi loại bỏ các TestCase mở rộng, tôi đã phải thêm nhập khẩu bổ sung để đảm bảo tôi đã có các phương pháp khẳng định tĩnh. nhập org.junit.Assert tĩnh. *; – burtlo

+6

Công việc tuyệt vời khi tìm giải pháp ẩn dưới dạng gợi ý trong ảnh chụp màn hình –

3

Chỉ cần chạy này trong IntelliJ sử dụng JUnit 4.4:

@Test(expected = IllegalArgumentException.class) 
    public void testExpected() 
    { 
     throw new IllegalArgumentException(); 
    } 

Passes một cách hoàn hảo.

Tạo lại toàn bộ dự án của bạn và thử lại. Có cái gì đó khác mà bạn đang làm sai. JUnit 4.4 đang hoạt động như được quảng cáo.

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