เรามีชุดทดสอบที่ใช้การยืนยัน JUnit กับ Hamcrest matchers เป็นหลัก หนึ่งในทีมของเราเริ่มทดลองใช้AssertJและสร้างความประทับใจให้กับผู้คนด้วยไวยากรณ์ความยืดหยุ่นและความเปิดเผย มีคุณลักษณะหนึ่งที่ JUnit ให้ซึ่งฉันไม่พบสิ่งที่เทียบเท่าใน AssertJ นั่นคือการเพิ่มข้อความยืนยันความล้มเหลวแบบกำหนดเอง
เรามักจะเปรียบเทียบวัตถุที่ไม่ได้สร้างขึ้นเพื่อให้มนุษย์สามารถอ่านได้และจะมีรหัสหรือ UUID ที่ดูเหมือนสุ่มและเป็นไปไม่ได้ที่จะบอกว่าข้อมูลเหล่านั้นควรจะเป็นอย่างไร นี่เป็นสถานการณ์ที่หลีกเลี่ยงไม่ได้สำหรับ codebase ของเราน่าเศร้าที่ส่วนหนึ่งของวัตถุประสงค์ที่บรรลุคือการทำแผนที่ข้อมูลระหว่างบริการอื่น ๆ โดยไม่จำเป็นต้องเข้าใจว่ามันคืออะไร
ใน JUnit assertThat
วิธีการจัดเตรียมเวอร์ชันที่มีString reason
พารามิเตอร์ก่อนMatcher<T>
พารามิเตอร์ สิ่งนี้ทำให้การเพิ่มสตริงดีบักสั้น ๆ เป็นเรื่องเล็กน้อยซึ่งจะช่วยให้เกิดความกระจ่างเกี่ยวกับปัญหาเช่นการเปรียบเทียบควรมีความหมายกับมนุษย์อย่างไร
ในทางกลับกันAssertJ มีstatic assertThat
วิธีการทั่วไปที่แตกต่างกันกว่าล้านล้านวิธีซึ่งส่งคืนรูปแบบของอินเทอร์เฟซ Assertหรือหนึ่งในคลาสที่นำไปใช้งานจำนวนมาก อินเทอร์เฟซนี้ไม่ได้จัดเตรียมวิธีมาตรฐานในการตั้งค่าข้อความที่กำหนดเองที่จะรวมกับความล้มเหลว
มีวิธีใดบ้างในการรับฟังก์ชันนี้จาก AssertJ API หรือหนึ่งในส่วนขยายโดยไม่ต้องสร้างคลาสการยืนยันที่กำหนดเองสำหรับทุกประเภทการยืนยันที่เราต้องการเพิ่มข้อความ
withFailMessage
; ฉันชอบ AssertJ แต่มันแย่มาก