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 TestFixtureche 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.