ดังนั้นการทดสอบแบบยืนยันเพียงครั้งเดียวจึงเป็นการละเมิด DRY หรือไม่
ไม่ แต่มันส่งเสริมการละเมิด
การออกแบบเชิงวัตถุที่ดีมีแนวโน้มที่จะออกไปนอกหน้าต่างสำหรับการทดสอบหน่วย - ส่วนใหญ่ด้วยเหตุผลที่ดี สิ่งสำคัญคือการแยกการทดสอบหน่วยออกจากกันเพื่อให้สามารถทำการสอบปากคำแบบแยกและถ้าจำเป็นให้แก้ไขด้วยความมั่นใจว่าคุณจะไม่หยุดการทดสอบอื่น โดยทั่วไปการทดสอบความถูกต้องและความสามารถในการอ่านนั้นสำคัญกว่าขนาดหรือความสามารถในการบำรุงรักษา
ตรงไปตรงมาฉันไม่เคยเป็นแฟนตัวยงของกฎหนึ่งข้อต่อการทดสอบด้วยเหตุผลที่คุณอธิบาย: มันนำไปสู่รหัสสำเร็จรูปจำนวนมากที่ยากต่อการอ่านง่ายต่อการต้มตุ๋นผิดและยากที่จะแก้ไขให้ดีถ้าคุณสร้างใหม่ (ซึ่งผลักดันให้คุณลดการรีแฟคเตอร์ให้น้อยลง)
หากฟังก์ชั่นควรส่งคืนรายการ "foo" และ "bar" สำหรับอินพุตที่กำหนด แต่ไม่ว่าในลำดับใดก็ตามก็เป็นการดีที่จะใช้การยืนยันสองชุดเพื่อตรวจสอบว่าทั้งสองอยู่ในชุดผลลัพธ์ ที่ที่คุณมีปัญหาคือเมื่อการทดสอบเดี่ยวกำลังตรวจสอบสองอินพุตหรือผลข้างเคียงที่สองและคุณไม่รู้ว่าสาเหตุใดที่ทำให้เกิดความล้มเหลว
ฉันคิดว่ามันเป็นการเปลี่ยนแปลงในหลักการความรับผิดชอบเดี่ยว: ควรมีเพียงสิ่งเดียวเท่านั้นที่สามารถทำให้การทดสอบล้มเหลวและในโลกอุดมคติที่การเปลี่ยนแปลงควรทำลายการทดสอบเพียงครั้งเดียว
แต่ในที่สุดมันก็เป็นการแลกเปลี่ยน คุณมีแนวโน้มที่จะใช้เวลามากขึ้นในการรักษารหัสการทำสำเนาทั้งหมดหรือคุณจะใช้เวลามากขึ้นในการค้นหาสาเหตุที่แท้จริงเมื่อการทดสอบอาจถูกทำลายโดยหลายแหล่ง ตราบใดที่คุณเขียน - บาง - การทดสอบมันอาจไม่สำคัญมากนัก แม้จะเป็นการดูถูกเหยียดหยามของฉันสำหรับการทดสอบแบบยืนยันครั้งเดียว ไมล์สะสมของคุณอาจแตกต่างกันไป