Mi è stato chiesto di fare un piccolo progetto laterale per fornire una semplice applicazione a uno dei nostri clienti. Normalmente lavorerei sul codice di back-end in cui ho capito tutti i miei bisogni di test, e non ho ancora avuto il dubbio piacere di scrivere test per la GUI, quindi non è chiaro per me come dovrei impostare il codice di test e gli strumenti per un EXE.
Il mio primo istinto era quello di includere semplicemente i test con il codice dell'applicazione, tuttavia ciò avrebbe richiesto di fornire una serie di dipendenze specifiche per i test, che mi è stato chiesto di non spedire specificamente al cliente. Inoltre, non sono in grado di spremere denaro per uno strumento di test appositamente costruito, quindi ho bisogno di usare gli strumenti che ho a portata di mano ( StoryQ , RhinoMocks e NUnit), che in realtà dovrebbe essere più che sufficiente per testare il comportamento di una semplice app GUI. Per quanto posso vedere, questo mi lascia cercando di trovare un buon equilibrio tra il mantenimento del design davvero semplice o l'ingegnerizzazione intenzionale per motivi di test. Sembra che sto costruendo l'app con la logica aziendale in una libreria separata e testando la libreria come farei di solito, o trovando qualche altro meccanismo per consentirmi all'eseguibile senza rompere moduli aggiuntivi che il design dell'applicazione non davvero bisogno.
Modifica: si
noti che questa domanda riguarda come strutturare la relazione tra NUnit e il mio eseguibile - al contrario di una DLL - e non su come separare la presentazione e la logica aziendale.
/Modificare
Quindi la mia domanda è:
- Esiste un metodo specifico / consigliato per la configurazione di una semplice applicazione GUI con test unitari che mi consenta di controllare adeguatamente lo stato e il comportamento, utilizzando gli strumenti che ho a portata di mano e senza ricorrere a un eccesso di ingegneria?
- Ho perso qualcosa di fondamentale sul modo in cui NUnit dovrebbe essere invocato / configurato durante il test di un EXE (al contrario di una DLL)?
- Potete fornirmi o indicarmi la direzione di esempi di come ottenere tutto ciò?
Mi rendo conto che potrebbe esserci più di un modo per farlo, quindi sto cercando specifiche linee guida di implementazione basate sulla tua esperienza.