Sto testando un metodo che genera una collezione di oggetti dati. Voglio verificare che le proprietà degli oggetti siano impostate correttamente. Alcune proprietà saranno impostate sulla stessa cosa; altri saranno impostati su un valore che dipende dalla loro posizione nella raccolta. Il modo naturale per farlo sembra essere un loop. Tuttavia, Roy Osherove raccomanda vivamente di non utilizzare la logica nei test unitari ( Art of Unit Testing , 178). Dice:
A test that contains logic is usually testing more than one thing at a time, whicfh isn't recommended, because the test is less readable and more fragile. But test logic also adds complexity that may contain a hidden bug.
Tests should, as a general rule, be a series of method calls with no control flows, not even
try-catch
, and with assert calls.
Tuttavia, non riesco a vedere nulla di sbagliato nella mia progettazione (in che altro modo generi un elenco di oggetti dati, alcuni dei cui valori dipendono da dove si trovano nella sequenza? -non è possibile generarli e testarli esattamente separatamente). C'è qualcosa di non test-friendly con il mio design? O mi sto dedicando troppo rigidamente all'insegnamento di Osherove? O c'è qualche magia di prova dell'unità segreta che non conosco che aggira questo problema? (Sto scrivendo in C # / VS2010 / NUnit, ma cerco le risposte indipendenti dalla lingua se possibile.)