Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon มีทางเลือกใดบ้างสำหรับ Hamcrest ที่ทำงานได้ดีขึ้นกับ Mockito


มีทางเลือกใดบ้างสำหรับ Hamcrest ที่ทำงานได้ดีขึ้นกับ Mockito


เมื่อทำงานกับ Mockito Hamcrest มักจะใช้สำหรับการจับคู่ที่แสดงออกซึ่งช่วยเพิ่มความสามารถในการอ่านของการทดสอบ อย่างไรก็ตามมีทางเลือกอื่นที่สามารถทำงานได้ดีกับ Mockito แต่ละคนมีจุดแข็งและจุดอ่อนของตัวเอง

assertj

Assertj เป็นทางเลือกยอดนิยมสำหรับ Hamcrest สำหรับการเขียนการยืนยันในการทดสอบหน่วย มันให้ API ที่คล่องแคล่วที่นักพัฒนาหลายคนพบว่าใช้งานได้ง่ายขึ้นและแสดงออกได้ง่ายกว่า Hamcrest ไวยากรณ์ของ Assertj มักจะเป็นที่ต้องการสำหรับความสามารถในการอ่านและความสามารถในการสร้างการยืนยันที่กำหนดเองได้อย่างง่ายดาย ในขณะที่ AssertJ ไม่ได้รวมเข้ากับ mockito โดยตรงอย่าง Hamcrest แต่ก็สามารถใช้ร่วมกับ Mockito สำหรับการยืนยันทำให้การทดสอบอ่านและบำรุงรักษาได้มากขึ้น อย่างไรก็ตาม AssertJ มุ่งเน้นไปที่การยืนยันมากกว่าความสามารถในการจับคู่ที่กว้างขึ้นของ Hamcrest [1] [3]

ความจริง

ความจริงเป็นอีกหนึ่งห้องสมุดการยืนยันที่พัฒนาโดย Google มันให้ API ที่คล่องแคล่วคล้ายกับ AssertJ แต่มุ่งเน้นไปที่การให้การสนับสนุนการเติมเต็มอัตโนมัติที่ดีขึ้นใน IDEs ซึ่งจะเป็นประโยชน์สำหรับการค้นพบการยืนยันที่มีอยู่ ความจริงไม่ได้ใช้กับ mockito เป็น hamcrest แต่สามารถใช้สำหรับการยืนยันในการทดสอบ เช่นเดียวกับ assertj ความจริงมุ่งเน้นไปที่การยืนยันมากกว่าการจับคู่วัตถุประสงค์ทั่วไปที่ Hamcrest ให้ [3]

จับคู่ในตัวของ Mockito

Mockito นั้นมีการจับคู่ที่สามารถใช้สำหรับการตบและตรวจสอบการโต้ตอบกับวัตถุจำลอง ตัวจับคู่เหล่านี้ส่งคืนประเภทที่พวกเขากำลังจับคู่ (เช่น `` ใด ๆ (จำนวนเต็ม) `ส่งคืน` จำนวนเต็ม ') ซึ่งแตกต่างจาก hamcrest matchers ที่ส่งคืน `matcher' ในการใช้ Hamcrest Matchers กับ Mockito คุณสามารถใช้ `argthat` หรือ` mockitohamcrest.argthat` เพื่อแปลง Hamcrest Matcher เป็นรูปแบบที่เข้ากันได้กับ mockito [7]

การใช้งานที่กำหนดเอง

สำหรับสถานการณ์ที่คุณไม่ต้องการใช้ไลบรารีภายนอกคุณสามารถใช้เครื่องจับคู่หรือการยืนยันของคุณเอง วิธีการนี้ช่วยให้สามารถควบคุมพฤติกรรมและไวยากรณ์ได้อย่างสมบูรณ์ แต่ต้องใช้ความพยายามและการบำรุงรักษามากขึ้น โดยทั่วไปแล้วจะไม่แนะนำเว้นแต่คุณจะมีความต้องการเฉพาะที่ไม่พบโดยไลบรารีที่มีอยู่

บทสรุป

ในขณะที่ Hamcrest ใช้กันอย่างแพร่หลายกับ mockito เนื่องจากความยืดหยุ่นและการแสดงออกทางเลือกเช่น Assertj และความจริงสามารถเพิ่มส่วนการยืนยันของการทดสอบของคุณ หากคุณกำลังมองหาสิ่งที่รวมเข้ากับ Mockito เพื่อจุดประสงค์ในการจับคู่ Hamcrest ยังคงเป็นตัวเลือกที่แข็งแกร่ง แต่คุณสามารถใช้เครื่องจับคู่ร่วมกับห้องสมุดยืนยันอื่น ๆ เพื่อประสบการณ์การทดสอบที่ครอบคลุมมากขึ้น ในที่สุดตัวเลือกขึ้นอยู่กับความต้องการและความชอบเฉพาะของคุณเกี่ยวกับความสามารถในการอ่านความสะดวกในการใช้งานและประเภทของการยืนยันหรือการจับคู่ที่คุณต้องการในการทดสอบของคุณ

การอ้างอิง:
[1] https://www.reddit.com/r/java/comments/nj7dvd/who_here_are_using_the_hamcrest_api_and_why/
[2] https://www.javacodegeeks.com/2015/11/hamcrest-matchers-tutorial.html
[3] https://truth.dev/comparison.html
[4] https://www.reddit.com/r/javahelp/comments/oqz8cn/unit_testing_with_mockito_framework_why_do_we/
[5] https://www.infoworld.com/article/2257253/junit-5-tutorial-part-part-1-unit-testing-with-junit-5-mockito-and-hamcrest.html
[6] https://softwareengineering.stackexchange.com/questions/447953/alternatives-to-using-mock-libraries-such-as-mockito-in-munit-testing
[7] https://stackoverflow.com/questions/8348046/mockitos-matcher-vs-hamcrest-matcher
[8] https://stackoverflow.com/questions/12606196/what-is-the-alternative-to-using-the-defecated-hamcrest-method-is