ฉันต้องการที่จะเล่นกับผู้สนับสนุนปีศาจในคำถามนี้เล็กน้อยเพราะฉันไม่สามารถปกป้องมันได้ดีเพราะขาดประสบการณ์ นี่คือข้อตกลงฉันได้รับแนวคิดแตกต่างระหว่างการทดสอบหน่วยและการทดสอบการรวม เมื่อมุ่งเน้นไปที่วิธีการติดตาและพื้นที่เก็บข้อมูลโดยเฉพาะการทดสอบหน่วยจะใช้การเยาะเย้ยผ่านกรอบเช่น Moq เพื่อยืนยันว่าคำสั่งการค้นหาถูกส่งคืนตามที่คาดไว้
สมมติว่าฉันได้สร้างการทดสอบหน่วยต่อไปนี้:
[TestMethod]
public void GetOrderByIDTest()
{
//Uses Moq for dependency for getting order to make sure
//ID I set up in 'Arrange' is same one returned to test in 'Assertion'
}
ดังนั้นถ้าฉันตั้งค่าOrderIdExpected = 5
และวัตถุจำลองของฉันจะกลับมา5
เป็น ID ที่การทดสอบของฉันจะผ่าน ฉันเข้าใจแล้ว ฉันหน่วยทดสอบรหัสเพื่อให้แน่ใจว่าสิ่งที่รหัส preforms ของฉันคืนวัตถุและ ID ที่คาดหวังและไม่ใช่อย่างอื่น
อาร์กิวเมนต์ที่ฉันจะได้รับคือ:
"ทำไมไม่เพียงแค่ข้ามการทดสอบหน่วยและทำการทดสอบการรวมกันมันเป็นการทดสอบขั้นตอนการจัดเก็บฐานข้อมูลและรหัสของคุณด้วยกันที่สำคัญดูเหมือนว่างานพิเศษมากเกินกว่าที่จะมีการทดสอบหน่วยและการทดสอบการรวมเข้าด้วยกัน และรหัสทำงานฉันรู้ว่าการทดสอบใช้เวลานานกว่า แต่พวกเขาต้องเรียกใช้และทดสอบโดยไม่คำนึงถึงดังนั้นฉันจึงไม่มีจุดหมายที่จะมีทั้งคู่เพียงทดสอบกับสิ่งที่สำคัญ "
ฉันสามารถปกป้องมันด้วยคำจำกัดความของหนังสือที่ชอบ: "นั่นคือการทดสอบการรวมและเราจำเป็นต้องทดสอบรหัสแยกต่างหากเป็นการทดสอบหน่วยและ yada, yada, yada, yada ... " นี่เป็นกรณีที่คำอธิบายที่พิถีพิถันของการปฏิบัติ เมื่อเทียบกับความเป็นจริง ฉันพบเจอสิ่งนี้ในบางครั้งและถ้าฉันไม่สามารถปกป้องเหตุผลที่อยู่เบื้องหลังรหัสการทดสอบหน่วยที่ท้ายที่สุดก็ขึ้นอยู่กับการพึ่งพาจากภายนอก
ความช่วยเหลือใด ๆ ในคำถามนี้ชื่นชมอย่างมากขอบคุณ!