Mockito Aurgion Matchers เป็นเครื่องมือที่มีประสิทธิภาพที่ใช้ในการทดสอบหน่วยเพื่อระบุอาร์กิวเมนต์ที่ระบุได้อย่างยืดหยุ่นเมื่อตั้งค่าการจำลอง อย่างไรก็ตามพวกเขามาพร้อมกับข้อ จำกัด หลายประการ:
1. บริบทการใช้งาน: การจับคู่อาร์กิวเมนต์สามารถใช้งานได้ภายในบริบทของวิธีการตบเบา ๆ หรือตรวจสอบ ไม่สามารถใช้งานได้เมื่อใช้วิธีการโทรบนวัตถุภายใต้การทดสอบ ตัวอย่างเช่นคุณไม่สามารถใช้ `anystring ()` เมื่อเรียกวิธีการบนวัตถุจริง แต่คุณควรใช้ค่าคอนกรีต [1] [5]
2. ความสอดคล้องข้ามอาร์กิวเมนต์: เมื่อใช้ตัวจับคู่อาร์กิวเมนต์สำหรับอาร์กิวเมนต์หนึ่งข้อโต้แย้งอื่น ๆ ทั้งหมดจะต้องใช้ตัวจับคู่ คุณไม่สามารถผสมเครื่องจับคู่กับค่าคอนกรีตสำหรับอาร์กิวเมนต์ที่แตกต่างกันในการโทรวิธีเดียวกัน นี่เป็นแหล่งที่มาทั่วไปของ `invaliduseofmatchersexception` [7] [8]
3. ข้อ จำกัด การเยาะเย้ย: Mockito ไม่สามารถเยาะเย้ยวิธีการบางอย่างเช่น `Equals ()`, `hashCode ()` หรือวิธีสุดท้าย ในขณะที่ผู้จับคู่อาร์กิวเมนต์สามารถใช้กับวิธีการที่สามารถล้อเลียนได้ แต่พวกเขาไม่ขยายความสามารถในการเยาะเย้ยวิธีการที่ จำกัด เหล่านี้ [3]
4. ประเภทการจับคู่อาร์กิวเมนต์: Mockito ให้ความหลากหลายของตัวจับคู่อาร์กิวเมนต์ในตัว (เช่น `anyint ()`, `anystring ()`, `isnull ()`) แต่คุณต้องเลือกประเภทที่ถูกต้องสำหรับอาร์กิวเมนต์ ตัวอย่างเช่นการใช้ `any ()` ที่มีประเภทดั้งเดิมอาจไม่ทำงานตามที่คาดไว้ ให้ใช้ตัวจับคู่ที่เฉพาะเจาะจงมากขึ้นเช่น `anyboolean ()` สำหรับพารามิเตอร์บูลีน [7]
5. ตัวจับคู่อาร์กิวเมนต์แบบกำหนดเอง: ในขณะที่ Mockito อนุญาตให้คุณสร้าง matchers แบบกำหนดเองโดยใช้วิธี `argthat ()` การใช้อินเตอร์เฟส `argentMatcher` ต้องพิจารณาอย่างรอบคอบเพื่อให้แน่ใจว่าผู้จับคู่จะทำงานตามที่คาดไว้ในสถานการณ์ที่แตกต่างกัน [2] [4]
6. การรวมเข้ากับไลบรารีอื่น ๆ : เมื่อใช้ mockito กับห้องสมุดอื่น ๆ เช่น Hamcrest ให้แน่ใจว่าการรวมนั้นได้รับการจัดการอย่างเหมาะสม ตัวอย่างเช่น Sonarqube อาจตั้งค่าสถานะการใช้งานบางอย่างของ `argthat ()` ด้วย hamcrest matchers ว่าไม่ถูกต้องแม้ว่าจะถูกต้อง [4]
โดยสรุปในขณะที่ผู้จับคู่อาร์กิวเมนต์ Mockito มีความหลากหลายการใช้งานของพวกเขาถูก จำกัด ไว้ที่บริบทเฉพาะและต้องการความสอดคล้องในการโต้แย้งวิธีการ นอกจากนี้พวกเขาไม่ได้เอาชนะข้อ จำกัด พื้นฐานของ Mockito เกี่ยวกับวิธีการหรือชั้นเรียนบางอย่าง
การอ้างอิง:[1] https://groups.google.com/g/mockito/c/ul9ymczqnky
[2] https://kenkousen.substack.com/p/tales-from-the-jar-side-a-mockito
[3] https://ioflood.com/blog/mockito/
[4] https://community.sonarsource.com/t/problem-with-java-rule-s6073-mockito-argument-matchers-in-pase-of-usage-mockitohamcrest-adapter/38429
[5] https://groups.google.com/g/mockito/c/zi6pcquedtco
[6] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.argumentmatchers.isnull
[7] https://stackoverflow.com/questions/16458136/mockito-invalid-use-of-argument-matchers
[8] https://www.baeldung.com/mockito-argument-matchers