บันทึกเบื้องต้น
ฉันจะไม่เข้าไปในความแตกต่างของชนิดที่แตกต่างกันของการทดสอบมีมีอยู่แล้วไม่กี่คำถามในเว็บไซต์เหล่านี้เกี่ยวกับการที่
ฉันจะใช้สิ่งที่มีและที่กล่าวว่า: การทดสอบหน่วยในแง่ของ "การทดสอบหน่วยแยกได้ที่เล็กที่สุดของแอปพลิเคชัน"ซึ่งคำถามนี้มาจริง
ปัญหาการแยกตัว
คืออะไรหน่วย isolatable ที่เล็กที่สุดของโปรแกรม อย่างที่ฉันเห็นมันขึ้นอยู่กับว่าคุณกำลังใช้ภาษาอะไร
Micheal Feathers พูดถึงแนวคิดของรอยต่อ : [WEwLC, p31]
ตะเข็บเป็นสถานที่ที่คุณสามารถเปลี่ยนพฤติกรรมในโปรแกรมของคุณโดยไม่ต้องแก้ไขในสถานที่นั้น
และโดยไม่ต้องลงรายละเอียดฉันเข้าใจตะเข็บ - ในบริบทของการทดสอบหน่วย - เป็นสถานที่ในโปรแกรมที่ "การทดสอบ" ของคุณสามารถเชื่อมต่อกับ "หน่วย" ของคุณ
ตัวอย่าง
การทดสอบหน่วย - โดยเฉพาะอย่างยิ่งใน C ++ ต้องการรหัสจากการทดสอบเพื่อเพิ่มตะเข็บเพิ่มเติมที่จะถูกเรียกอย่างเคร่งครัดสำหรับปัญหาที่ระบุ
ตัวอย่าง:
- การเพิ่มอินเทอร์เฟซเสมือนซึ่งการใช้งานที่ไม่ใช่เสมือนจะเพียงพอ
- การแยก - การสรุป (?) - คลาส (เล็ก) เพิ่มเติม "เพียงแค่" เพื่ออำนวยความสะดวกในการเพิ่มการทดสอบ
- การแยกโครงการที่ดำเนินการได้ครั้งเดียวออกเป็น libs ที่ "อิสระ" ดูเหมือน "เพียง" เพื่อช่วยในการรวบรวมพวกเขาอย่างอิสระสำหรับการทดสอบ
คำถาม
ฉันจะลองรุ่นไม่กี่รุ่นที่หวังว่าจะถามถึงจุดเดียวกัน:
- เป็นวิธีที่การทดสอบหน่วยต้องการโครงสร้างของรหัสแอปพลิเคชัน "เท่านั้น" ที่เป็นประโยชน์สำหรับการทดสอบหน่วยหรือเป็นประโยชน์ต่อโครงสร้างแอปพลิเคชันหรือไม่
- การวางหลักเกณฑ์ทั่วไปที่จำเป็นสำหรับการทดสอบหน่วยมีประโยชน์สำหรับทุกสิ่งยกเว้นการทดสอบหน่วยหรือไม่?
- การเพิ่มการทดสอบหน่วยบังคับให้หนึ่งเป็นการทั่วไปที่ไม่จำเป็นหรือไม่?
- การทดสอบหน่วยรูปร่างบังคับใช้กับรหัส "เสมอ" และยังมีรูปร่างที่ดีสำหรับรหัสทั่วไปตามที่เห็นจากโดเมนปัญหาหรือไม่
ฉันจำกฎของหัวแม่มือที่กล่าวว่าไม่พูดคุยจนกว่าคุณจะต้อง / จนกว่าจะมีสถานที่ที่สองที่ใช้รหัส กับการทดสอบหน่วยมีเสมอสถานที่ที่สองที่ใช้รหัส - คือการทดสอบหน่วย ดังนั้นเหตุผลนี้เพียงพอที่จะพูดคุยกันทั่วไปหรือไม่