Tôi có cấu trúc đối tượng khá phức tạp (với nhiều trường nguyên thủy và tham chiếu đối tượng) và muốn kiểm tra tất cả các trường ngoại trừ -a vài trường. Như một ví dụ;Hamcrest - Cách thanh lịch để kiểm tra đối tượng phức tạp với samepropertyvaluesas
ComplexObject actual = generateMagically("someInput");
ComplexObject expected = ActualFunction.instance.workMagically(actual);
// we want to be sure that workMagically() would create a new ComplexObject
// with some fields are different than "actual" object.
// assertThat(actual, samePropertyValuesAs(expected)); would check all fields.
// what I want is actually; - notice that "fieldName1" and "fieldName2" are
// primitives belong to ComplexObject
assertThat(actual, samePropertyValuesExceptAs(expected, "fieldName1", "fieldName2"))
Vì tôi không muốn kiểm tra tất cả các trường theo cách thủ công, tôi tin rằng phải có cách viết bài kiểm tra đó một cách trang nhã. Ý tưởng nào?
Chúc mừng.
Vì vậy, bạn có hai * túi đối tượng * và muốn thực hiện so sánh sâu? – Raffaele
Không chắc chắn để gọi chúng đối tượng túi, có nhiều lĩnh vực nguyên thủy và tài liệu tham khảo đối tượng khác. Các trường tôi muốn bỏ qua là các trường nguyên thủy thuộc về ComplexObject. Chúng ta có thể nói đó sẽ là một sự so sánh sâu sắc. – tugcem
Bạn có muốn thực hiện Trình phù hợp cho 'samePropertyValuesExceptAs' làm câu trả lời cho câu hỏi này không? Nếu vậy thì bạn chỉ có thể tạo một bản sao của 'org.hamcrest.beans.SamePropertyValuesAs' và thêm vào nó một phương thức khởi tạo/phương thức tĩnh khác để loại bỏ các thuộc tính bị loại trừ khỏi việc kiểm tra. –
SpaceTrucker