Chúng tôi có một bộ thử nghiệm chủ yếu sử dụng các xác nhận JUnit với các trình khớp Hamcrest. Một trong nhóm của chúng tôi đã bắt đầu thử nghiệm với AssertJ và gây ấn tượng với mọi người về cú pháp, tính linh hoạt và khả năng khai báo của nó. Có một tính năng mà JUnit cung cấp mà tôi không thể tìm thấy tính năng tương đương trong AssertJ: thêm thông báo lỗi xác nhận tùy chỉnh.
Chúng tôi thường so sánh các đối tượng không được tạo ra để con người có thể đọc được và sẽ có các Id hoặc UUID trông có vẻ ngẫu nhiên và không thể biết chúng là gì bằng dữ liệu chúng chứa. Đây là một tình huống không thể tránh khỏi đối với cơ sở mã của chúng tôi, đáng buồn thay, một phần của mục đích mà nó thực hiện là ánh xạ dữ liệu giữa các dịch vụ khác mà không nhất thiết phải hiểu nó là gì.
Trong JUnit, assertThat
phương thức cung cấp một phiên bản có String reason
tham số trước tham số Matcher<T>
. Điều này làm cho việc thêm một chuỗi gỡ lỗi ngắn làm sáng tỏ vấn đề, giống như ý nghĩa của phép so sánh đối với con người.
Mặt khác, AssertJ cung cấp hàng nghìn phương thức tổng quát hóastatic assertThat
khác nhau trả về một số dạng Assert giao diện hoặc một trong nhiều lớp triển khai của nó. Giao diện này không cung cấp một cách tiêu chuẩn để thiết lập một thông báo tùy chỉnh được đưa vào các lỗi.
Có cách nào để có được chức năng này từ API AssertJ hoặc một trong các tiện ích mở rộng của nó mà không cần phải tạo lớp xác nhận tùy chỉnh cho mọi loại xác nhận mà chúng tôi muốn thêm thông báo vào không?
withFailMessage
vật chất; Tôi thích AssertJ, nhưng điều này thật tệ.