Test Driven Development berarti Anda berhenti membuat kode ketika semua tes Anda lulus.
Jika Anda tidak memiliki pengujian untuk sebuah properti, lalu mengapa Anda harus menerapkannya? Jika Anda tidak menguji / menentukan perilaku yang diharapkan jika terjadi penetapan "ilegal", apa yang harus dilakukan properti?
Oleh karena itu saya benar-benar untuk menguji setiap perilaku yang harus ditunjukkan oleh kelas. Termasuk properti "primitif".
Untuk mempermudah pengujian ini, saya membuat NUnit sederhana TestFixture
yang menyediakan poin ekstensi untuk menyetel / mendapatkan nilai dan mengambil daftar nilai yang valid dan tidak valid serta memiliki satu pengujian untuk memeriksa apakah properti berfungsi dengan benar. Menguji satu properti bisa terlihat seperti ini:
[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 }; }
}
Menggunakan lambda dan atribut, ini bahkan dapat ditulis dengan lebih ringkas. Saya mengumpulkan MBUnit bahkan memiliki beberapa dukungan asli untuk hal-hal seperti itu. Intinya adalah bahwa kode di atas menangkap maksud dari properti.
PS: Mungkin PropertyTest juga harus memiliki cara untuk memeriksa bahwa properti lain pada objek tidak berubah. Hmm .. kembali ke papan gambar.