Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon อะไรคือข้อดีของการใช้ mockitohamcrest มากกว่า hamcrest matchers แบบดั้งเดิม


อะไรคือข้อดีของการใช้ mockitohamcrest มากกว่า hamcrest matchers แบบดั้งเดิม


การใช้ mockitohamcrest ผ่าน hamcrest matchers แบบดั้งเดิมมีข้อได้เปรียบหลายประการโดยเฉพาะอย่างยิ่งเมื่อทำงานกับ Mockito เพื่อเยาะเย้ยในการทดสอบหน่วย นี่คือประโยชน์ที่สำคัญ:

1. การรวมเข้ากับ Mockito: Mockitohamcrest ช่วยให้คุณสามารถรวมการจับคู่ Hamcrest เข้ากับกรอบการเยาะเย้ยของ Mockito ได้อย่างราบรื่น การรวมนี้เป็นสิ่งสำคัญสำหรับการตั้งค่าสตับหรือตรวจสอบวิธีการเรียกใช้กับการจับคู่อาร์กิวเมนต์ที่ซับซ้อนซึ่งไม่ได้รับการสนับสนุนโดยตรงจาก hamcrest matchers แบบดั้งเดิมเพียงอย่างเดียว ตัวอย่างเช่นคุณสามารถใช้ `mockitohamcrest.argthat` ในการแปลง hamcrest matcher เป็น mockito matcher ทำให้คุณสามารถใช้ชุดจับคู่ที่หลากหลายของ Hamcrest ในบริบท Mockito [1] [10] [12]

2. การหลีกเลี่ยงความเข้ากันไม่ได้ของเวอร์ชัน: Mockito ถูกแยกออกจาก Hamcrest ในเวอร์ชัน 2.1.0 เพื่อหลีกเลี่ยงความไม่ลงรอยกันของรุ่นที่ทำให้เกิดปัญหาสำหรับผู้ใช้ในอดีต Mockitohamcrest ให้วิธีการใช้ Hamcrest Matchers โดยไม่ต้องเชื่อมโยงกับ Hamcrest รุ่นเฉพาะอย่างแน่นหนาซึ่งจะช่วยลดความขัดแย้งที่อาจเกิดขึ้น [1] [10]

3. ความยืดหยุ่นในการจับคู่การโต้แย้ง: Mockitohamcrest ช่วยให้คุณใช้การจับคู่ที่ยืดหยุ่นและแสดงออกของ Hamcrest เพื่อกำหนดสถานการณ์การจับคู่อาร์กิวเมนต์ที่ซับซ้อน สิ่งนี้มีประโยชน์อย่างยิ่งเมื่อคุณต้องการตรวจสอบว่าวิธีการถูกเรียกด้วยอาร์กิวเมนต์ที่ตรงกับเงื่อนไขบางประการเช่นสตริงที่มีย่อยหรือตัวเลขเฉพาะภายในช่วงที่กำหนด [4] [12]

4. การปรับปรุงความสามารถในการอ่านและรหัสเอกสารด้วยตนเอง: โดยการใช้ Hamcrest Matchers ผ่าน Mockitohamcrest การทดสอบของคุณจะยังคงเป็นเอกสารด้วยตนเองและอ่านง่าย ผู้จับคู่แสดงความตั้งใจของการทดสอบอย่างชัดเจนทำให้นักพัฒนาเข้าใจได้ง่ายขึ้นโดยไม่จำเป็นต้องมีความคิดเห็นเพิ่มเติม [3] [9]

5. ข้อความแสดงข้อผิดพลาดที่ดีกว่า: เมื่อการยืนยันล้มเหลว Hamcrest ให้ข้อความแสดงข้อผิดพลาดโดยละเอียดและมีความหมายซึ่งสามารถช่วยในการดีบักได้อย่างมีนัยสำคัญ สิ่งนี้เป็นประโยชน์อย่างยิ่งเมื่อใช้ mockitohamcrest เนื่องจากช่วยระบุว่าทำไมการตรวจสอบจำลองล้มเหลวทำให้ง่ายต่อการวินิจฉัยปัญหา [3] [9]

6. การปรับแต่งและการขยายความสามารถ: API Matcher ของ Hamcrest ช่วยให้คุณสร้างเครื่องจับคู่แบบกำหนดเองได้ตามความต้องการการทดสอบเฉพาะของคุณ เมื่อรวมกับ mockitohamcrest ความสามารถในการขยายนี้ช่วยให้คุณสามารถเขียนการทดสอบที่ตรงเป้าหมายและแสดงออกมากขึ้นซึ่งตรงกับตรรกะของแอปพลิเคชันของคุณอย่างแม่นยำ [6] [9]

โดยสรุป Mockitohamcrest นำเสนอการผสมผสานที่ทรงพลังของความสามารถในการเยาะเย้ยของ Mockito ด้วยการจับคู่ที่ยืดหยุ่นและแสดงออกของ Hamcrest เพิ่มความสามารถในการทดสอบความยืดหยุ่นและการบำรุงรักษา

การอ้างอิง:
[1] https://site.mockito.org/javadoc/current/org/mockito/hamcrest/mockitohamcrest.html
[2] https://stackoverflow.com/questions/20441594/mockito-and-hamcrest-how-to-verify-invocation-of-collection-argument
[3] https://automatenow.io/complete-guide-to-hamcrest-matchers/
[4] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.hamcrest.mockitohamcrest.mockitohamcrest
[5] https://www.javadoc.io/doc/org.mockito/mockito-core/2.2.9/org/mockito/argumentmatcher.html
[6] https://www.javacodegeeks.com/2015/11/custom-hamcrest-matchers.html
[7] https://www.lambdatest.com/automation-testing-advisor/selenium/classes/org.mockito.hamcrest.mockitohamcrest
[8] https://site.mockito.org/javadoc/current/index.html?org%2fmockito%2FargumentMatcher.html
[9] https://www.vogella.com/tutorials/hamcrest/article.html
[10] https://weblab.tudelft.nl/docs/mockito/3.10/org/mockito/hamcrest/mockitohamcrest.html
[11] https://truth.dev/comparison.html
[12] https://stackoverflow.com/questions/8348046/mockitos-matcher-vs-hamcrest-matcher