ใน Mockito `VerifyzeroInteractions 'เป็นวิธีการตรวจสอบพิเศษที่ใช้เพื่อให้แน่ใจว่าไม่มีการเรียกใช้วิธีใดในวัตถุที่ล้อเลียนในระหว่างการทดสอบ วิธีนี้มีความสำคัญต่อการรักษาความบริสุทธิ์ของการทดสอบหน่วยโดยการป้องกันการโต้ตอบที่ไม่ได้ตั้งใจซึ่งอาจบ่งบอกถึงข้อบกพร่องในตรรกะหรือการพึ่งพาที่ไม่จำเป็น
ความแตกต่างจากวิธีการตรวจสอบอื่น ๆ
1. วัตถุประสงค์และพฤติกรรม:
- `VerifyzeroInteractions ': วิธีนี้ตรวจสอบว่าไม่มีการเรียกใช้วิธีการในวัตถุที่ล้อเลียน หากตรวจพบการโทรวิธีใด ๆ Mockito จะทำการยกเว้นทำให้การทดสอบล้มเหลว มันถูกใช้เพื่อยืนยันว่าวัตถุจำลองยังคงไม่ถูกแตะต้องในระหว่างการดำเนินการทดสอบ [1] [4]
- `Verify`: วิธีนี้ใช้เพื่อตรวจสอบว่าการเรียกวิธีการเฉพาะนั้นเกิดขึ้นตามที่คาดไว้ ช่วยให้คุณสามารถตรวจสอบได้ว่ามีการเรียกวิธีการที่มีอาร์กิวเมนต์เฉพาะหรือไม่และสามารถใช้กับโหมดการตรวจสอบต่างๆเช่น `times ()`, `atleast ()` และ `atermest ()` เพื่อระบุจำนวนการเรียกใช้ [2] [7]
2. โหมดการตรวจสอบ:
- `VerifyzeroInteractions` ไม่รองรับโหมดการตรวจสอบ มันเพียงแค่ตรวจสอบว่าไม่มีการโต้ตอบใด ๆ
- `Verify` รองรับโหมดการตรวจสอบหลายโหมดเช่น` Times () `,` atleast () `,` atleastonce () `และ` attest () `` ช่วยให้คุณสามารถระบุวิธีการที่เรียกว่า [2] [7]
3. คำสั่งซื้อ:
- `VerifyzeroInteractions 'ไม่เกี่ยวข้องกับคำสั่งของวิธีการโทรเนื่องจากมันตรวจสอบว่าไม่มีการโต้ตอบเลย
- `Verify` สามารถใช้กับ` inorder` เพื่อตรวจสอบลำดับของการเรียกใช้วิธีการบนวัตถุจำลอง สิ่งนี้มีประโยชน์เมื่อลำดับของการโทรวิธีมีความสำคัญ [2] [7]
4. ใช้กรณี:
- โดยทั่วไป `VerifyzeroInteractions จะใช้เมื่อคุณต้องการให้แน่ใจว่าวัตถุจำลองไม่ได้ใช้ในสถานการณ์ทดสอบ สิ่งนี้ช่วยในการแยกหน่วยภายใต้การทดสอบและทำให้มั่นใจว่าไม่มีผลข้างเคียงเกิดขึ้นเนื่องจากการโต้ตอบที่ไม่คาดคิด [1] [4]
- `Verify` ใช้ในสถานการณ์ที่คุณต้องการยืนยันว่าการโต้ตอบเฉพาะเกิดขึ้นระหว่างวัตถุ มันเป็นสิ่งสำคัญสำหรับการทดสอบพฤติกรรมที่คาดหวังของระบบภายใต้การทดสอบ [2] [7]
5. ความสัมพันธ์กับ `VerifyNomoreInteractions ':
- `VerifyzeroInteractions 'ตรวจสอบว่าไม่มีการโต้ตอบเกิดขึ้นเลย
- `VerifyNomoreInteractions 'ตรวจสอบว่าการโต้ตอบทั้งหมดในวัตถุจำลองได้รับการตรวจสอบแล้ว มันทำให้มั่นใจได้ว่าไม่มีการโต้ตอบที่ไม่ผ่านการตรวจสอบหลังจากใช้ `Verify` สำหรับการโทรวิธีเฉพาะ [3] [9]
โดยสรุป `VerifyzeroInteractions` เป็นวิธีพิเศษที่มุ่งเน้นไปที่การสร้างความมั่นใจว่าไม่มีการโต้ตอบเกิดขึ้นในขณะที่` Verify` มีความหลากหลายมากขึ้นทำให้คุณสามารถตรวจสอบการโต้ตอบเฉพาะและความถี่ของพวกเขา ทั้งสองวิธีมีความสำคัญในการทดสอบหน่วยกับ Mockito ซึ่งให้บริการเพื่อวัตถุประสงค์ที่แตกต่างกันขึ้นอยู่กับสถานการณ์การทดสอบ
การอ้างอิง:[1] https://www.dhiwise.com/post/how-to-use-verifyzerointeractions-for-better-flutter-tests
[2] https://www.dhiwise.com/post/mastering-unit-testing-a-complete-guide-to-mockito-verify
[3] https://stackoverflow.com/questions/52396683/difference-between-verifynomoreinteract
[4] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.verifyzerointeractions
[5] https://stackoverflow.com/questions/64239160/using-mockito-when-to-mock-and-verify-vs-mockito-verify
[6] https://www.javacodegeeks.com/2015/11/mockito-verification.html
[7] https://www.toptal.com/java/a-guide-to-ereryday-mockito
[8] https://www.baeldung.com/mockito-verify
[9] https://www.digitalocean.com/community/tutorials/mockito-verify