Test Driven Development significa che interrompi la codifica quando tutti i tuoi test vengono superati.
Se non hai un test per una proprietà, perché dovresti implementarlo? Se non testate / definite il comportamento previsto in caso di assegnazione "illegale", cosa dovrebbe fare la proprietà?
Pertanto sono assolutamente favorevole a testare ogni comportamento che una classe dovrebbe mostrare. Comprese le proprietà "primitive".
Per rendere più facile questo test, ho creato una semplice NUnit TestFixture
che fornisce punti di estensione per l'impostazione / l'acquisizione del valore e prende elenchi di valori validi e non validi e dispone di un singolo test per verificare se la proprietà funziona correttamente. Il test di una singola proprietà potrebbe essere simile a questo:
[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 }; }
}
Utilizzando lambda e attributi questo potrebbe anche essere scritto in modo più compatto. Ho capito che MBUnit ha anche un supporto nativo per cose del genere. Il punto però è che il codice precedente cattura l'intento della proprietà.
PS: Probabilmente il PropertyTest dovrebbe anche avere un modo per verificare che le altre proprietà dell'oggetto non siano cambiate. Hmm .. torniamo al tavolo da disegno.