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