ฉันกำลังทดสอบวิธีการในการสร้างคอลเลกชันของวัตถุข้อมูล ฉันต้องการตรวจสอบว่ามีการตั้งค่าคุณสมบัติของวัตถุอย่างถูกต้อง คุณสมบัติบางอย่างจะถูกตั้งค่าเป็นสิ่งเดียวกัน อื่น ๆ จะถูกกำหนดเป็นค่าซึ่งขึ้นอยู่กับตำแหน่งของพวกเขาในคอลเลกชัน วิธีที่เป็นธรรมชาติในการทำสิ่งนี้ดูเหมือนจะเป็นแบบวนซ้ำ อย่างไรก็ตาม Roy Osherove แนะนำอย่างยิ่งต่อการใช้ตรรกะในการทดสอบหน่วย ( Art of Unit Testing , 178) เขาพูดว่า:
การทดสอบที่มีลอจิกมักจะทำการทดสอบมากกว่าหนึ่งอย่างในแต่ละครั้งซึ่งไม่แนะนำให้ทำเพราะการทดสอบนั้นสามารถอ่านได้ง่ายกว่าและเปราะบางกว่า แต่ตรรกะการทดสอบยังเพิ่มความซับซ้อนที่อาจมีจุดบกพร่องที่ซ่อนอยู่
การทดสอบควรเป็นชุดของการเรียกใช้เมธอดโดยไม่มีโฟลว์ควบคุมไม่เท่า
try-catch
กันและด้วยการเรียกยืนยัน
อย่างไรก็ตามฉันไม่เห็นสิ่งผิดปกติในการออกแบบของฉัน (คุณจะสร้างรายการของวัตถุข้อมูลได้อย่างไรค่าบางค่าขึ้นอยู่กับว่าอยู่ในลำดับที่เป็นอย่างไร - ไม่สามารถสร้างและทดสอบแยกต่างหากได้อย่างแน่นอน มีบางสิ่งที่ไม่เป็นมิตรกับการออกแบบของฉันหรือไม่? หรือการอุทิศตนอย่างจริงจังกับคำสอนของ Osherove เกินไป? หรือมีเวทย์มนตร์ทดสอบหน่วยความลับบางอย่างที่ฉันไม่รู้เกี่ยวกับการหลีกเลี่ยงปัญหานี้หรือไม่? (ฉันกำลังเขียนใน C # / VS2010 / NUnit แต่มองหาคำตอบที่ไม่เชื่อเรื่องภาษาถ้าเป็นไปได้)
in
) หากการทดสอบคือ "Frob ถูกเพิ่มไปยังคอลเลกชันที่มีอยู่แล้ว"
toString()
ชุดสะสมและเปรียบเทียบกับสิ่งที่ควรจะเป็น ง่ายและใช้งานได้