การตีความของฉันในการพูดนั้นคือ:
- ส่วนประกอบการทดสอบไม่ใช่คลาส
- ทดสอบส่วนประกอบผ่านพอร์ตอินเตอร์เฟส
มันไม่ได้ระบุในการพูดคุย แต่ฉันคิดว่าบริบทที่สันนิษฐานสำหรับคำแนะนำนั้นเป็นอย่างไร:
- คุณกำลังพัฒนาระบบสำหรับผู้ใช้ไม่ใช่พูดไลบรารีสาธารณูปโภคหรือกรอบงาน
- เป้าหมายของการทดสอบคือการประสบความสำเร็จในการส่งมอบมากที่สุดเท่าที่เป็นไปได้ภายในงบประมาณที่มีการแข่งขัน
- ส่วนประกอบเขียนด้วยภาษาเดียวที่เป็นผู้ใหญ่อาจพิมพ์แบบคงที่ภาษาอย่าง C # / Java
- ส่วนประกอบคือลำดับ 10,000-50000 บรรทัด โครงการ Maven หรือ VS, ปลั๊กอิน OSGI ฯลฯ
- ส่วนประกอบถูกเขียนขึ้นโดยผู้พัฒนารายเดียวหรือทีมงานที่มีการผสมผสานอย่างใกล้ชิด
- คุณกำลังติดตามคำศัพท์และวิธีการบางอย่างเช่นสถาปัตยกรรมหกเหลี่ยม
- พอร์ตคอมโพเนนต์เป็นที่ที่คุณออกจากภาษาท้องถิ่นและระบบชนิดด้านหลังสลับเป็น http / SQL / XML / bytes / ...
- การรวมทุกพอร์ตเป็นอินเทอร์เฟซที่พิมพ์ใน Java / C # sense ซึ่งสามารถนำการใช้งานไปใช้เพื่อสลับเทคโนโลยี
ดังนั้นการทดสอบส่วนประกอบจึงเป็นขอบเขตที่ใหญ่ที่สุดซึ่งบางสิ่งยังสามารถเรียกได้ว่าเป็นการทดสอบหน่วย นี่ค่อนข้างแตกต่างจากวิธีที่บางคนโดยเฉพาะนักวิชาการใช้คำนี้ ไม่มีอะไรเหมือนตัวอย่างในบทแนะนำเครื่องมือทดสอบหน่วยทั่วไป อย่างไรก็ตามมันตรงกับที่มาในการทดสอบฮาร์ดแวร์ บอร์ดและโมดูลได้รับการทดสอบโดยหน่วยไม่ใช่สายไฟและสกรู หรืออย่างน้อยคุณไม่ได้สร้างโบอิ้งจำลองเพื่อทดสอบสกรู ...
การคาดการณ์จากนั้นและโยนความคิดของตัวเองออกมา
- ทุกอินเตอร์เฟสจะเป็นอินพุทเอาท์พุทหรือผู้ทำงานร่วมกัน (เช่นฐานข้อมูล)
- คุณทดสอบอินเทอร์เฟซการป้อนข้อมูล เรียกวิธีการยืนยันค่าที่ส่งคืน
- คุณจำลองอินเตอร์เฟสเอาท์พุท ตรวจสอบว่าวิธีการที่คาดหวังจะถูกเรียกสำหรับกรณีทดสอบที่กำหนด
- คุณปลอมผู้ทำงานร่วมกัน; ให้การใช้งานที่เรียบง่าย แต่ใช้งานได้
หากคุณทำอย่างถูกต้องและเรียบร้อยคุณต้องใช้เครื่องมือเยาะเย้ย มันใช้งานได้ไม่กี่ครั้งต่อระบบ
ฐานข้อมูลโดยทั่วไปแล้วจะเป็นผู้ทำงานร่วมกันดังนั้นมันจึงแกล้งทำแทนที่จะแกล้งทำ นี่จะเจ็บปวดที่จะใช้ด้วยมือ โชคดีที่สิ่งเหล่านั้นมีอยู่แล้ว
รูปแบบการทดสอบพื้นฐานคือการทำงานบางอย่าง (เช่นบันทึกและโหลดเอกสารใหม่) ยืนยันว่าใช้งานได้ นี่เป็นสิ่งเดียวกันกับสถานการณ์การทดสอบอื่น ๆ ไม่มีการเปลี่ยนแปลงในการใช้งาน (ที่ทำงาน) มีแนวโน้มที่จะทำให้การทดสอบดังกล่าวล้มเหลว
ยกเว้นในกรณีที่บันทึกของฐานข้อมูลถูกเขียน แต่ไม่เคยอ่านโดยระบบภายใต้การทดสอบ เช่นบันทึกการตรวจสอบหรือคล้ายกัน สิ่งเหล่านี้คือผลลัพธ์และควรถูกเยาะเย้ย รูปแบบการทดสอบทำลำดับของการดำเนินการบางอย่าง ยืนยันว่าอินเตอร์เฟสการตรวจสอบนั้นถูกเรียกด้วยเมธอดและอาร์กิวเมนต์ตามที่ระบุไว้
โปรดทราบว่าแม้ที่นี่การให้คุณใช้เครื่องมือการเยาะเย้ยแบบปลอดภัยเช่นmockito การเปลี่ยนชื่อวิธีการอินเทอร์เฟซไม่สามารถทำให้เกิดการทดสอบล้มเหลว หากคุณใช้ IDE ที่โหลดการทดสอบแล้วมันจะได้รับการปรับเปลี่ยนใหม่พร้อมกับการเปลี่ยนชื่อเมธอด ถ้าคุณไม่ทดสอบจะไม่รวบรวม