Programowanie sterowane testami oznacza, że po przejściu wszystkich testów przestajesz kodować.
Jeśli nie masz testu dla właściwości, to dlaczego miałbyś go wdrożyć? Jeśli nie przetestujesz / nie zdefiniujesz oczekiwanego zachowania w przypadku „nielegalnej” cesji, co powinna zrobić nieruchomość?
Dlatego jestem całkowicie za testowaniem każdego zachowania, które powinna wykazywać klasa. W tym właściwości „prymitywne”.
Aby ułatwić to testowanie, stworzyłem prosty NUnit, TestFixture
który zapewnia punkty rozszerzeń do ustawiania / pobierania wartości i pobiera listy prawidłowych i nieprawidłowych wartości oraz ma pojedynczy test, aby sprawdzić, czy właściwość działa poprawnie. Testowanie pojedynczej właściwości mogłoby wyglądać następująco:
[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 }; }
}
Używając lambd i atrybutów, można to nawet napisać bardziej zwięźle. Rozumiem, że MBUnit ma nawet natywne wsparcie dla takich rzeczy. Chodzi jednak o to, że powyższy kod oddaje intencję właściwości.
PS: Prawdopodobnie PropertyTest powinien mieć również sposób sprawdzenia, czy inne właściwości obiektu nie uległy zmianie. Hmm ... wracając do deski kreślarskiej.