Test Güdümlü Geliştirme, tüm testleriniz başarılı olduğunda kodlamayı bırakmanız anlamına gelir.
Bir mülk için testiniz yoksa, neden onu uygulamalısınız? "Yasadışı" bir atama durumunda beklenen davranışı test etmez / tanımlamazsanız, özellik ne yapmalıdır?
Bu nedenle, bir sınıfın sergilemesi gereken her davranışı test etmek için kesinlikle varım. "İlkel" özellikler dahil.
Bu testi kolaylaştırmak TestFixture
için, değeri ayarlamak / almak için uzantı noktaları sağlayan ve geçerli ve geçersiz değerlerin listelerini alan ve mülkün doğru çalışıp çalışmadığını kontrol etmek için tek bir testi olan basit bir NUnit oluşturdum . Tek bir özelliği test etmek şu şekilde görünebilir:
[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 }; }
}
Lambdalar ve nitelikler kullanılarak bu daha derli toplu yazılabilir. MBUnit'in bunun gibi şeyler için bazı yerel desteğe sahip olduğunu anlıyorum. Önemli olan nokta, yukarıdaki kodun mülkün amacını yakalamasıdır.
Not: Muhtemelen PropertyTest'in nesnedeki diğer özelliklerin değişmediğini kontrol etmenin bir yolu da olmalıdır . Hmm .. çizim tahtasına geri dönelim.