Domanda

Quindi so che il test unitario è un must.Ho l'idea che TDD sia la strada da percorrere quando si aggiungono nuovi moduli.Anche se, in pratica, non lo faccio davvero.Un po' come il codice dei commenti, in realtà.

La cosa reale è che faccio fatica a capire come testare l'unità dell'interfaccia utente e, più in generale, gli oggetti che generano eventi:controlli utente, operazioni asincrone del database, ecc.

Gran parte del mio codice si riferisce agli eventi dell'interfaccia utente che non riesco nemmeno a capire come avviare il test unitario.

Devono esserci dei manuali e dei documenti iniziali là fuori?Alcuni suggerimenti e suggerimenti?

Generalmente lavoro in C# (2.0 e 3.5) ma non sono sicuro che questo sia strettamente rilevante per la domanda.

È stato utile?

Soluzione

la cosa da ricordare è che il test unitario riguarda il test delle unità di codice che scrivi.I tuoi test unitari non dovrebbero verificare che facendo clic su un pulsante si generi un evento, ma che il codice eseguito da quell'evento clic faccia come dovrebbe.

Ciò che vuoi veramente fare è testare che il codice sottostante faccia quello che dovrebbe in modo che i livelli dell'interfaccia utente possano eseguire quel codice con sicurezza.

Altri suggerimenti

Leggi questo se hai difficoltà con i test dell'interfaccia utente

Testare manualmente gli elementi dell'interfaccia utente in cui il vantaggio in termini di costi nell'automazione è minimo.Testa spietatamente tutto sotto la skin dell'interfaccia utente.Utilizza Humble Dialog, MVC o varianti per mantenere la logica e l'interfaccia utente distinte e liberamente accoppiate.

Dovresti separare logica e presentazione.Utilizzando i modelli MVP (Model-View-Presenter)/MVC (Model-View-Controller) puoi testare l'unità della logica senza fare affidamento sugli eventi dell'interfaccia utente.Inoltre puoi usare Quadro bianco per simulare l'input dell'utente.Ti consiglio vivamente di visitare Microsoft Centro per sviluppatori di Patterns&Practices, dai un'occhiata in particolare al blocco applicativo composito e a Prism: puoi ottenere molte informazioni sulla progettazione basata sui test.

Le parti della tua applicazione che comunicano con il mondo esterno (ad esempio UI, database ecc.) sono sempre un problema durante i test unitari.Il modo per aggirare questo problema in realtà non è testare quegli strati ma renderli il più sottili possibile.Per l'interfaccia utente puoi utilizzare una finestra di dialogo umile o una vista che non fa nulla che valga la pena testare e quindi inserire tutta la logica in una classe controller o presentatore.È quindi possibile utilizzare un framework fittizio o scrivere i propri oggetti mock per creare versioni false delle visualizzazioni per testare la logica nei presentatori o nel controller.Dal lato del database puoi fare qualcosa di simile.

Testare gli eventi non è impossibile.Puoi ad esempio iscrivere un metodo anonimo all'evento che lancia un'eccezione se l'evento viene lanciato o conta il numero di volte in cui l'evento viene lanciato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top