Tôi đã từng hơi một vài lần bởi các câu lệnh Java assert
không bị lỗi trong bộ kiểm thử JUnit vì các xác nhận không được kích hoạt trong cá thể JVM của JUnit. Để được rõ ràng, đây là những xác nhận "hộp đen" bên trong việc triển khai (kiểm tra bất biến, vv) không phải xác nhận được xác định bởi các kiểm tra JUnit. Tất nhiên, tôi muốn bắt bất kỳ lỗi xác nhận như vậy trong bộ thử nghiệm.JUnit: Cho phép các xác nhận trong lớp dưới kiểm tra
Giải pháp rõ ràng là thực sự cẩn thận để sử dụng -enableassertions
bất cứ khi nào tôi chạy JUnit, nhưng tôi muốn có một giải pháp mạnh mẽ hơn. Một giải pháp thay thế là thêm bài kiểm tra sau vào mỗi lớp kiểm tra:
@Test(expected=AssertionError.class)
public void testAssertionsEnabled() {
assert(false);
}
Có cách nào tự động hơn để thực hiện việc này không? Một tùy chọn cấu hình toàn hệ thống cho JUnit? Một cuộc gọi năng động mà tôi có thể đưa vào phương thức setUp()
?
Chỉ cần một câu hỏi chung. Nếu bạn thực sự muốn kiểm tra kỹ lưỡng mã của mình, bạn có nên kiểm tra và không bật xác nhận không? Một điều khẳng định là ** thực sự tốt ** cho việc giới thiệu các tác dụng phụ không mong muốn. –
btw. bạn đang chạy JUnit Testcases như thế nào? Nếu bạn có một số trình quản lý xây dựng (kiến, maven), nó sẽ là tầm thường để thêm công tắc này theo mặc định – jitter
@Alexander: Đó không phải là một ý tưởng tồi. @jitter: Tất nhiên là bạn đúng. Maven dường như bật xác nhận theo mặc định. Tôi đã không nhận thấy trước đó Eclipse có một thiết lập ưu tiên cho việc này. Vấn đề là các loại cài đặt này có thể thay đổi sau lưng của bạn ... –