Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon มีข้อผิดพลาดทั่วไปเมื่อล้อเลียนข้อยกเว้นกับ mockito


มีข้อผิดพลาดทั่วไปเมื่อล้อเลียนข้อยกเว้นกับ mockito


เมื่อใช้ mockito เพื่อเยาะเย้ยข้อยกเว้นข้อผิดพลาดทั่วไปหลายประการสามารถทำให้การทดสอบของคุณมีประสิทธิภาพน้อยลงหรือยากต่อการรักษา นี่คือข้อผิดพลาดเหล่านี้และวิธีการหลีกเลี่ยง:

1. มุกมากเกินไป **

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

2. ข้อยกเว้นที่ไม่ถูกต้อง **

Mockito ทำให้มั่นใจได้ว่าข้อยกเว้นที่ถูกโยนทิ้งนั้นใช้ได้กับวิธีการที่เฉพาะเจาะจง หากคุณพยายามที่จะโยนข้อยกเว้นที่ไม่ได้อยู่ในรายการข้อยกเว้นของวิธีการตรวจสอบ Mockito จะบ่น ตัวอย่างเช่นหากวิธีการไม่ประกาศ `ioexception` การพยายามที่จะเยาะเย้ยมันเพื่อโยน` ioexception` จะส่งผลให้เกิดข้อผิดพลาด [1] ตรวจสอบให้แน่ใจเสมอว่าข้อยกเว้นที่ล้อเลียนนั้นใช้ได้กับวิธีการ

3. การใช้ `thenthrow ()` ด้วยวิธีการเป็นโมฆะ **

`เมื่อ (). thenthrow ()` ไม่สามารถใช้กับวิธีการเป็นโมฆะได้เนื่องจากไม่มีค่าคืนกลับไปเยาะเย้ย ให้ใช้ `dothrow ()` สำหรับวิธีการเป็นโมฆะแทน การผสมวิธีการเหล่านี้อย่างไม่ถูกต้องอาจนำไปสู่ข้อผิดพลาด [2]

4. ขาดความจำเพาะ **

เมื่อเยาะเย้ยข้อยกเว้นสิ่งสำคัญคือการเฉพาะเจาะจงเกี่ยวกับข้อยกเว้นที่คุณกำลังทดสอบ หลีกเลี่ยงการทำมัดเกินไปโดยมุ่งเน้นไปที่ข้อยกเว้นที่เกี่ยวข้องกับสถานการณ์การทดสอบ สิ่งนี้จะช่วยให้การทดสอบมุ่งเน้นและบำรุงรักษาได้ [2] [8]

5. การจัดการการประหารชีวิตที่ไม่ถูกต้อง **

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

6. การใช้ข้อความแสดงข้อผิดพลาดที่มีความหมาย **

เมื่อล้อเลียนข้อยกเว้นให้รวมข้อความที่มีความหมายเพื่อช่วยวินิจฉัยปัญหาหากการทดสอบล้มเหลว การปฏิบัตินี้ช่วยเพิ่มความชัดเจนและประสิทธิผลของการทดสอบของคุณ [2]

7. การทดสอบข้อยกเว้นการจัดการตรรกะ **

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

8. การรีเซ็ตและล้างการจำลอง **

Mockito มีคุณสมบัติเช่น `reset ()` และ `clearinvocations ()` สำหรับการจัดการ mocks อย่างไรก็ตามสิ่งเหล่านี้ควรใช้เท่าที่จำเป็น การรีเซ็ตการเยาะเย้ยควรทำเฉพาะในบางกรณีเช่นเมื่อมีการจำลองการจำลองโดยคอนเทนเนอร์และไม่สามารถสร้างใหม่สำหรับการทดสอบแต่ละครั้ง การเรียกเก็บเงินการเรียกเก็บเงินอาจเป็นประโยชน์หากการสร้างเยาะเย้ยใหม่จะนำไปสู่ค่าใช้จ่ายที่สำคัญ [1]

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

การอ้างอิง:
[1] https://www.toptal.com/java/a-guide-to-ereryday-mockito
[2] https://www.browserstack.com/guide/mockito-hrow-exception
[3] https://javanexus.com/blog/avoiding-mockito-testing-pitfalls
[4] https://stackoverflow.com/questions/9186604/mockito-exception-when-requires-an-argument-hich-has-to-be-method-call-on
[5] https://stackoverflow.com/questions/22540108/best-practices-with-mockito
[6] https://stackoverflow.com/questions/52512548/mock-method-to-do-not-hrow-an-exception/52514628
[7] https://contributors.scala-lang.org/t/mockito-testing-nulls-and-exceptions/3915
[8] https://www.janbasktraining.com/community/java/throw-checked-exceptions-from-mocks-with-mockito