Esempi reali di app scritte con TDD e buona copertura di test? [chiuso]

17

Esistono applicazioni open source sviluppate utilizzando lo sviluppo basato su test che fungono da modelli di come dovrebbe funzionare un buon test unitario?

Preferirei vedere esempi in C # e .NET. (Nota che ho menzionato le applicazioni, non solo le librerie).

Sono un programmatore di medio livello che vuole davvero credere e praticare TDD. L'app su cui lavoro nel mio lavoro giornaliero è piuttosto complicata - circa 1 milione di righe di codice - e mi piacerebbe introdurre più test di unità. Abbiamo alcuni test unitari in atto, ma i miei sforzi per TDD e con il lavoro su codice già in fase di test non sono stati incoraggianti.

Nella mia esperienza dichiaratamente limitata, TDD sembra incoraggiare molta complessità in nome del disaccoppiamento. I bit dell'app che sono difficili da testare e che, per coincidenza, tendono a essere critici, vengono spinti verso la periferia, nel regno dei test di integrazione che potrebbero essere scritti o meno. (Sto pensando ai soliti sospetti qui, all'accesso al file system, all'idratazione di oggetti da un database, a chiamate web asincrone, ecc.)

Il codice sottoposto a test tende a coinvolgere molta collaborazione tra gli oggetti, e forse qualche semplice logica di flusso, tutto ciò che avviene in memoria e che potrebbe essere probabilmente scritto in un modo più semplice e comprensibile se tutto non dovesse essere completamente disaccoppiati per i test.

Capisco le tecniche per deridere le dipendenze e così via, ma nella mia esperienza l'uso massiccio di derisione porta a test molto fragili. Se il mio primo istinto nel vedere un gruppo di test diventare rosso è "Grande, ora devo sistemare tutti i mock", quindi i miei test sono diventati una resistenza piuttosto che una rete di sicurezza.

Sto cercando di superare questa barriera mentale e, come parte di ciò, sto leggendo il libro di Michael Feathers, Lavorare efficacemente con il codice legacy . Spero di mostrarmi un po 'di quello che mi manca.

Mi piacerebbe anche studiare alcune applicazioni .NET non banali con una buona copertura del codice, forse un sistema di gestione dei contenuti o un'applicazione CRUD. Il framework di testing di FitNesse di cui parla Uncle Bob è qualcosa che probabilmente guarderò, ma sarebbe bello vedere qualcosa scritto nella lingua con cui ho più familiarità.

Sarebbe gradito qualsiasi suggerimento o parola di saggezza.

    
posta Josh Earl 18.04.2012 - 19:35
fonte

3 risposte

14

Non so se è stato utilizzato TDD, ma un esempio stellare di test è sqlite che ha una notevole copertura della filiale al 100% e ha oltre 1000 volte più codice di test e script rispetto al codice prodotto.

    
risposta data 18.04.2012 - 21:08
fonte
4

Il progetto Orchard potrebbe essere quello che stai cercando .. È un'applicazione .NET / MVC / TDD che è abbastanza complessa, ma non troppo male e dimostra alcune buone pratiche e modelli ..

link

e immagino il link aggiornato:

link

    
risposta data 18.04.2012 - 20:01
fonte
0

Molte librerie open source di terze parti sono TDDed. Le librerie di Hibernating Rhinos, come RhinoMocks e NHibernate, sono TDDed dai loro sviluppatori che usano XUnit come framework di test unitario.

Ora, con OSS, di solito non è possibile garantire che TUTTO il prodotto sia stato TDDed. La comunità può avere degli standard che includono questa pratica, e possono anche usare un build-bot che esegue metriche di copertura del codice, ma TDD è una mentalità che deve essere comprata dallo sviluppatore e con il pubblico in generale in grado di impegnarsi per aprire fonte di tronchi VCS come quelli su GitHub, chiunque può commettere qualsiasi cambiamento con qualsiasi quantità di copertura del test (o se è richiesta la copertura i test potrebbero essere stati scritti dopo il fatto, che è una violazione dello spirito di TDD ma non c'è davvero un buon modo per catturarlo su commit).

    
risposta data 18.04.2012 - 21:02
fonte

Leggi altre domande sui tag