คำถามนี้อ้างอิงถึง "การทดสอบกล่องสีขาว" โดยเฉพาะ นี่คือที่การทดสอบของคุณมีความรู้อย่างใกล้ชิดเกี่ยวกับโครงสร้างภายในของรหัสของคุณและยืนยันพฤติกรรมในแต่ละขั้นตอนมากกว่าเพียงแค่อินพุต / เอาท์พุต / ผลข้างเคียง (การทดสอบกล่องดำ) ในขณะที่ JUnit ยอดเยี่ยมในการทำทั้งสองอย่างคุณต้องมีเฟรมเวิร์กเพิ่มเติมเพิ่มเติมเพื่อทำสิ่งนี้ภายในบริบทของการทดสอบหน่วย
EasyMockและJMockเป็นกรอบที่ดีในการทำเช่นนี้ ฉันมักจะชอบ JMock
เมื่อมีความเสี่ยงในการเริ่มการอภิปราย OT คุณควรคิดอย่างรอบคอบเกี่ยวกับผลกระทบของการทดสอบกล่องสีขาว การทดสอบกล่องสีขาวนั้นผูกติดอยู่กับรหัสของคุณ (ชัด) และหากไม่ได้ใช้อย่างรอบคอบกรอบการเยาะเย้ยอาจทำให้การทดสอบของคุณค่อนข้างซับซ้อนยากต่อการอ่านและมีแนวโน้มที่จะเปราะเมื่อทำการปรับโครงสร้างใหม่
ฉันมักจะติดทั้งสองอย่างผสมกัน การทดสอบกล่องดำทุกที่ที่เป็นไปได้และการทดสอบกล่องสีขาวนำไปใช้กับโค้ดที่มีความเสี่ยง / ซับซ้อนมากขึ้น
แน่นอนเฟรมเวิร์กที่กล่าวถึงข้างต้นสามารถใช้ในการทดสอบกล่องดำซึ่งจำนวนคลาสที่สนับสนุน (ฉีด) มีขนาดใหญ่
เกี่ยวกับ TDD - เป็นหลักวิธีการเสริมสร้างการออกแบบในการเขียนโค้ดมากกว่าแค่วิธีการเขียนการทดสอบ การทดสอบที่คุณมีในตอนท้ายนั้นเป็นผลลัพธ์ที่สำคัญ แต่ยิ่งไปกว่านั้นวิธีการดังกล่าวมีวัตถุประสงค์เพื่อปรับปรุงการออกแบบและโครงสร้างของแอปพลิเคชันของคุณ