Scopo
Nell'ultimo anno o più ho imparato i test unitari tramite libri che ho letto di recente come The Art of Unit Testing , Funzionante in modo efficace con il codice legacy , e altri. Ho anche utilizzato test unitari, strutture di simulazione e simili, periodicamente al lavoro e sicuramente ne vedo il valore.
Tuttavia, sto ancora avendo difficoltà a ricomporre la mia mente su TDD (al contrario di TAD) quando la situazione richiede il codice che utilizza principalmente le chiamate API esterne.
Problema da risolvere
Ottieni il processo associato a un servizio di Windows utilizzando il nome del servizio.
esempio: Function GetProcess(ByVal serviceName As String) As Process
Regole
- Mostra le principali iterazioni in produzione e amp; codice di prova con TDD
- Non c'è bisogno di vedere nessun altro codice o configurazione necessaria per far funzionare le cose. Solo curiosità sulle interfacce, sulle classi concrete e sui metodi di test.
- C # o VB.NET
- Deve usare la struttura .Net per servizi / processi (cioè
System.Diagnostics.Process
) - Framework di test:
- Nunit o MSTest
- Quadri di isolamento:
- Moq, Rhino Mock o Microsoft Moles
- Deve scrivere test di unità reali (nessun test di integrazione)
Note aggiuntive
Per quanto posso dire, ci sono due approcci di design saggio.
- Utilizzare un approccio di Inversion of Control insieme all'utilizzo dei modelli Adapter e / o Facade per avvolgere gli oggetti framework .net sottostanti che trattano processi e servizi.
- Mantenere il codice .net framework nella classe contenente il metodo Get Process e utilizzare il code detouring (intercettazione) tramite Microsoft Moles per isolare le dipendenze dal metodo in prova.