Le développement piloté par les tests signifie que vous arrêtez de coder lorsque tous vos tests réussissent.
Si vous n'avez pas de test pour une propriété, pourquoi devriez-vous la mettre en œuvre? Si vous ne testez / définissez pas le comportement attendu en cas d'affectation «illégale», que doit faire la propriété?
Par conséquent, je suis totalement pour tester chaque comportement qu'une classe devrait présenter. Y compris les propriétés "primitives".
Pour faciliter ce test, j'ai créé un NUnit simple TestFixture
qui fournit des points d'extension pour définir / obtenir la valeur et prend des listes de valeurs valides et non valides et dispose d'un seul test pour vérifier si la propriété fonctionne correctement. Tester une seule propriété pourrait ressembler à ceci:
[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 }; }
}
En utilisant des lambdas et des attributs, cela pourrait même être écrit de manière plus compacte. Je suppose que MBUnit a même un support natif pour des choses comme ça. Le fait est que le code ci-dessus capture l'intention de la propriété.
PS: Probablement le PropertyTest devrait également avoir un moyen de vérifier que les autres propriétés de l'objet n'ont pas changé. Hmm ... retour à la planche à dessin.