อย่างแน่นอน. บางคนพูดว่า "การทดสอบใด ๆ ก็ดีกว่าการทดสอบเลย" ฉันไม่เห็นด้วยอย่างยิ่ง - การทดสอบเป็นลายลักษณ์อักษรไม่ดีทำให้ชะงักเวลาในการพัฒนาของคุณและคุณต้องเสียเวลาในการแก้ไขการทดสอบที่ "เสีย" เพราะพวกเขาไม่ได้ทำการทดสอบที่ดีในตอนแรก สำหรับฉันในตอนนี้สองสิ่งที่ฉันมุ่งเน้นที่จะทำให้การทดสอบของฉันมีค่ามากกว่าภาระคือ:
การบำรุงรักษา
คุณควรจะได้รับการทดสอบผล ( สิ่งที่เกิดขึ้น) ไม่วิธีการ ( วิธีการที่มันเกิดขึ้น) การตั้งค่าการทดสอบของคุณควรแยกออกจากการใช้งานเท่าที่จะทำได้: ตั้งค่าผลลัพธ์สำหรับการโทรหาบริการ ฯลฯ ที่จำเป็นอย่างยิ่งเท่านั้น
- ใช้กรอบการเยาะเย้ยเพื่อให้แน่ใจว่าการทดสอบของคุณไม่ได้ขึ้นอยู่กับสิ่งภายนอก
- ชอบต้นขั้วเหนือ mocks (ถ้ากรอบของคุณแตกต่างระหว่างพวกเขา) ทุกที่ที่เป็นไปได้
- ไม่มีตรรกะในการทดสอบ! ifs, switch, for-eaches, cases, try-catches และอื่น ๆ ล้วนแล้วแต่เป็น no-nos ขนาดใหญ่เนื่องจากพวกมันสามารถแนะนำบั๊กในโค้ดทดสอบได้
การอ่าน
มันก็โอเคที่จะอนุญาตให้ทำซ้ำอีกเล็กน้อยในการทดสอบของคุณซึ่งปกติคุณจะไม่อนุญาตในรหัสการผลิตของคุณหากมันทำให้อ่านง่ายขึ้น เพียงปรับสมดุลสิ่งนี้กับสิ่งที่บำรุงรักษาได้ด้านบน ชัดเจนในสิ่งที่ทำแบบทดสอบ!
- พยายามรักษาสไตล์ "จัดการกระทำยืนยัน" สำหรับการทดสอบของคุณ สิ่งนี้จะแยกการตั้งค่าและความคาดหวังของคุณออกจากการดำเนินการและผลลัพธ์ที่ได้รับการยืนยัน
- รักษาการยืนยันแบบตรรกะหนึ่งรายการต่อการทดสอบ (หากชื่อการทดสอบของคุณมี "และ" ในการทดสอบคุณอาจต้องแบ่งการทดสอบออกเป็นหลาย ๆ การทดสอบ)
โดยสรุปคุณควรกังวลอย่างมากกับการทดสอบ "ส่งกลิ่น" ซึ่งอาจทำให้เสียเวลาโดยไม่มีค่า
คุณเคยพูดว่า:
การทดสอบหน่วยมักจะต้องมี "แฮ็กเหม็น" ต่าง ๆ เช่นฟังก์ชั่นการขัดถู
ฟังดูเหมือนคุณจะสามารถอ่านเทคนิคการทดสอบหน่วยบางอย่างเช่นใช้กรอบการเยาะเย้ยเพื่อทำให้ชีวิตของคุณง่ายขึ้น ฉันขอแนะนำอย่างยิ่งศิลปะแห่งการทดสอบหน่วยซึ่งครอบคลุมเนื้อหาข้างต้นและอื่น ๆ อีกมากมาย ฉันพบว่ามันแจ่มใสหลังจากต่อสู้กับการทดสอบที่เขียนไม่ดีไม่มีใครเลย "smelly" เป็นเวลานาน เป็นหนึ่งในการลงทุนที่ดีที่สุดที่ฉันได้ทำในปีนี้!