ใน Mockito, `Times (n)` และ `atleast (n)` ถูกนำมาใช้ภายในวิธี `Verify` เพื่อตรวจสอบว่ามีวิธีการเรียกใช้วิธีการจำลองในวัตถุกี่ครั้ง นี่คือคำอธิบายโดยละเอียดของแต่ละ:
ครั้ง (n)
- วัตถุประสงค์: วิธีนี้ตรวจสอบว่าวิธีการเรียกว่า `n` ครั้ง หากวิธีการที่เรียกว่ามากหรือน้อยกว่า `n` ครั้งการทดสอบจะล้มเหลว- ตัวอย่าง: `ตรวจสอบ (เยาะเย้ย, ครั้ง (2)). somemethod ();` มั่นใจได้ว่า `somemethod ()` เรียกว่าสองครั้ง
- ใช้กรณี: ใช้เมื่อคุณต้องการเพื่อให้แน่ใจว่ามีการเรียกร้องจำนวนมากอย่างแม่นยำ
atleast (n)
- วัตถุประสงค์: วิธีนี้ตรวจสอบว่าวิธีการเรียกอย่างน้อย `n` เวลา หากวิธีการที่เรียกว่าน้อยกว่าเวลา `n` การทดสอบจะล้มเหลว แต่มันจะผ่านถ้าเรียกว่ามากกว่าเวลา` n`- ตัวอย่าง: `ตรวจสอบ (เยาะเย้ย, atleast (2)). somemethod ();` มั่นใจว่า `somemethod ()` เรียกอย่างน้อยสองครั้ง
- ใช้กรณี: ใช้เมื่อคุณต้องการให้แน่ใจว่ามีการเรียกร้องจำนวนน้อยที่สุด แต่ไม่สนใจค่าสูงสุด
ความแตกต่างที่สำคัญ
- แน่นอนเทียบกับขั้นต่ำ: `times (n)` ต้องใช้จำนวนการโทรที่แน่นอนในขณะที่ `atleast (n)` ต้องการอย่างน้อยจำนวนการโทรนั้น- ความยืดหยุ่น: `atleast (n)` มีความยืดหยุ่นมากขึ้นเนื่องจากอนุญาตให้มีการโทรมากกว่าที่ระบุในขณะที่ `times (n)` เข้มงวดเกี่ยวกับจำนวนการโทร
- การจัดการข้อผิดพลาด: หากมีการเรียกวิธีการมากกว่าเวลาที่ระบุด้วย `times (n)`, Mockito จะโยนข้อยกเว้น ('toomanyactualinvocations') ด้วย `atleast (n)` มันจะล้มเหลวเฉพาะในกรณีที่วิธีการเรียกว่าน้อยกว่าที่ระบุ (`` toolittleActualInvocations ')
โดยสรุป `times (n)` ใช้สำหรับการควบคุมที่แม่นยำมากกว่าจำนวนการโทรวิธีการในขณะที่ `atleast (n)` ถูกใช้เพื่อให้แน่ใจว่าเกณฑ์ขั้นต่ำของการโทรโดยไม่ จำกัด จำนวนการโทรสูงสุด
การอ้างอิง:[1] https://stackoverflow.com/questions/58176580/ what-is-the-difference-between-atleastonce-d-time1-in-mockito
[2] https://mincong.io/2019/09/22/mockito-verify/
[3] https://github.com/mockk/mockk
[4] https://site.mockito.org/javadoc/current/org/mockito/mockito.html
[5] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.atleast
[6] https://stackoverflow.com/questions/60969650/use-of-verify-method-with-with-without-times1-parameter
[7] https://www.digitalocean.com/community/tutorials/mockito-verify
[8] https://stackoverflow.com/questions/27787487/java-verify-void-method-calls-times-with-mockito
[9] https://www.javacodegeeks.com/2015/11/mockito-verification.html
[10] https://stackoverflow.com/questions/54233024/how-to-verify-a-method-hich-was-called-multiple-times/54233921