In che modo test unitario e codice UI?


10

Adoro scrivere unit test e concordo sul fatto che sono un modo eccellente per testare il codice, prevenire le regressioni, ecc. Tuttavia, non riesco a scriverli in quanto la stragrande maggioranza del codice su cui lavoro giorno dopo giorno è un'applicazione codice che visualizza un'interfaccia utente per l'utente. Esiste un buon metodo per testare il codice dell'applicazione? Quali sono le migliori pratiche qui?

Non sto cercando una risposta specifica come un framework, ecc. Ma piuttosto, in generale, come affronti questo problema?


Che cos'è il "codice dell'applicazione che visualizza l'interfaccia utente"? Stai parlando della C in MVC?
Martin Wickman,

Sto parlando di qualsiasi tipo di interfaccia grafica - JavaScript / HTML, C ++ con MFC, WinForms, WPF, ecc ...
Justin Ethier,

MVVM è facile da testare l'unità. Vedi Pattern di comando
Amir Rezaei,

@amir - Hai riferimenti o informazioni aggiuntive?
Justin Ethier,

Risposte:


8

Per testare l'interfaccia utente effettiva, Selenium funziona bene.

Se si desidera test unitari effettivi, la strategia consiste nel respingere la maggior parte della logica dall'interfaccia utente effettiva, in genere in un oggetto ViewModel. È quindi possibile scrivere unit test sull'oggetto ViewModel.

In altre parole, inserisci la minima logica possibile nell'interfaccia utente effettiva, in modo che il test dell'unità possa aver luogo altrove.


Questo è un buon design per SoC non dovrebbe esserci logica di dominio / business nell'interfaccia utente. Molta logica client: l'interattività / validazione può andare nell'interfaccia utente con JavaScript, che è testabile in unità.
StuperUser

1

Ho avuto successo con il test unitario della mia applicazione con MSTest e il test del mio Javascript con QUnit e la raccolta dei risultati di quei test con un singolo test Unit MSTest che utilizza WatiN (mi è stato suggerito il selenio , che ha anche la possibilità di registrare i test, ma trovato WatiN migliore per l'automazione pulita).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.