Test Driven Development หมายความว่าคุณจะหยุดเขียนโค้ดเมื่อการทดสอบทั้งหมดผ่าน
หากคุณไม่มีการทดสอบคุณสมบัติแล้วทำไมคุณถึงต้องติดตั้ง? หากคุณไม่ทดสอบ / กำหนดพฤติกรรมที่คาดหวังในกรณีที่มีการมอบหมายงาน "ผิดกฎหมาย" คุณสมบัติควรทำอย่างไร?
ดังนั้นฉันจึงทดสอบพฤติกรรมทุกอย่างที่ชั้นเรียนควรแสดง รวมถึงคุณสมบัติ "ดั้งเดิม"
เพื่อให้การทดสอบนี้ง่ายขึ้นฉันได้สร้าง NUnit แบบง่ายTestFixture
ที่ให้จุดส่วนขยายสำหรับการตั้งค่า / รับค่าและรับรายการค่าที่ถูกต้องและไม่ถูกต้องและมีการทดสอบเพียงครั้งเดียวเพื่อตรวจสอบว่าคุณสมบัตินั้นทำงานถูกต้องหรือไม่ การทดสอบคุณสมบัติเดียวอาจมีลักษณะดังนี้:
[TestFixture]
public class Test_MyObject_SomeProperty : PropertyTest<int>
{
private MyObject obj = null;
public override void SetUp() { obj = new MyObject(); }
public override void TearDown() { obj = null; }
public override int Get() { return obj.SomeProperty; }
public override Set(int value) { obj.SomeProperty = value; }
public override IEnumerable<int> SomeValidValues() { return new List() { 1,3,5,7 }; }
public override IEnumerable<int> SomeInvalidValues() { return new List() { 2,4,6 }; }
}
การใช้ lambdas และแอตทริบิวต์นี้อาจเขียนได้กระชับขึ้น ฉันรวบรวม MBUnit ได้แม้กระทั่งการสนับสนุนดั้งเดิมสำหรับสิ่งต่างๆเช่นนั้น ประเด็นก็คือว่ารหัสข้างต้นจะจับเจตนาของทรัพย์สิน
PS: อาจเป็นไปได้ว่า PropertyTest ควรมีวิธีตรวจสอบว่าคุณสมบัติอื่น ๆบนวัตถุไม่เปลี่ยนแปลง อืม .. กลับไปที่กระดานวาดภาพ