Procedura: creare ed eseguire uno unit test
Gli unit test offrono a sviluppatori e tester un modo rapido per verificare la presenza di errori di logica nei metodi delle classi in progetti C#, Visual Basic .NET e C++. Uno unit test può essere creato una volta ed eseguito ogni volta che il codice sorgente viene modificato per assicurarsi che non siano stati introdotti bug.
In questo argomento viene illustrato come utilizzare gli strumenti di unit test di Microsoft Visual Studio 2010 per generare automaticamente lo scheletro di uno unit test dal codice esistente, aggiungere la convalida a tale scheletro, creare una categoria e un elenco di test, eseguire un test e leggere i risultati di code coverage.
Per una descrizione delle parti di uno unit test, vedere Composizione di uno unit test.
Esempio di unit test
Questo esempio è basato sull'argomento Procedura dettagliata: creazione ed esecuzione di unit test.
Nella figura seguente è illustrata la finestra di dialogo Crea unit test. Viene visualizzata quando si fa clic con il pulsante destro del mouse su un file di codice che contiene metodi e quindi si fa clic su Crea unit test. Gli unit test vengono generati per tutti i metodi selezionati nell'elenco Tipi della finestra di dialogo.
Nella figura seguente viene illustrato che in questo esempio gli unit test verranno generati per i metodi Credit e Debit.
Dopo avere generato gli unit test, verrà creato un file di codice e le modifiche verranno mostrate in Esplora soluzioni.
Nella figura seguente vengono illustrati i risultati della creazione di unit test.
Viene creato uno unit test separato per ogni metodo selezionato nella finestra di dialogo Crea unit test. In questo esempio sono stati generati unit test per i metodi Credit e Debit.
Ogni unit test generato dispone di variabili vuote e di un'istruzione Assert segnaposto. L'istruzione Assert segnaposto predefinita è in genere l'istruzione Assert.Inconclusive.
Per rendere il test significativo, è necessario inizializzare le variabili e sostituire il segnaposto con un'istruzione Assert appropriata. In questo esempio lo unit test Credit generato viene lasciato invariato, mentre vengono inizializzate le variabili e l'istruzione Assert viene sostituita nel metodo di test Debit.
Quando si generano unit test per la prima volta, viene creato un progetto di test nella soluzione.
Per ogni classe che si desidera sottoporre a test, viene creato un file di unit test separato nel progetto di test. In questo esempio entrambi i metodi sottoposti a test appartengono alla stessa classe. Di conseguenza, è presente un solo file di unit test, BankAccountTest.cs.
Dopo avere eseguito i test, i risultati vengono visualizzati nella finestra Risultati test.
Creazione di unit test
La creazione di uno unit test prevede due fasi.
La prima fase consiste nella generazione di un file di unit test contenente lo scheletro di un metodo di test per ogni metodo nel codice sottoposto a test. Ogni scheletro di metodo di test viene generato con variabili vuote e un'istruzione Assert segnaposto.
La seconda fase consiste nell'inizializzazione delle variabili e nella sostituzione dell'istruzione Assert segnaposto con un'istruzione appropriata.
Generare gli scheletri per gli unit test
Utilizzare la finestra di dialogo Crea unit test per generare unit test per alcuni o per tutti i metodi nel codice sottoposto a test.
Nota
Anche se, in genere, i metodi contrassegnati con attributi quali private, internal e friend non sono visibili dall'esterno della classe di tali metodi, gli strumenti di Microsoft Visual Studio 2010 consentono agli unit test di accedere a quei metodi. Per ulteriori informazioni su questa procedura, vedere Unit test per metodi privati, interni e Friend..
Per generare lo scheletro per uno unit test
Aprire il codice che si desidera sottoporre a test nella finestra Editor di codice di Visual Studio.
(Solo per i servizi ASP.NET) Se si sottopone a test un servizio Web ASP.NET, assicurarsi che il progetto contenga una pagina con estensione aspx. Se si crea uno unit test per un servizio Web in un progetto che non contiene una pagina con estensione aspx, al tentativo di eseguire il test verrà visualizzato un errore. Per ulteriori informazioni, vedere Unit test per servizi Web ASP.NET.
Fare clic con il pulsante destro del mouse sullo spazio dei nomi, sulla classe o sul metodo che si desidera sottoporre a test, quindi fare clic su Crea unit test.
Nella finestra di dialogo Crea unit test selezionare le caselle di controllo per tutti i metodi che si desidera aggiungere al file di unit test.
(Facoltativo) Scegliere Impostazioni per modificare le impostazioni predefinite per gli unit test che si desidera creare. Si tratta di impostazioni di Visual Studio che vengono applicate a tutti gli unit test creati finché le impostazioni non vengono nuovamente modificate.
Impostazioni di denominazione: queste opzioni consentono di personalizzare la modalità di denominazione per file di test, classi di test e metodi di test quando si generano unit test.
Contrassegna tutti come Senza risultati: selezionare la casella di controllo per fornire a ogni metodo di test un'istruzione Assert.Inconclusive() come un'istruzione Assert segnaposto. Deselezionare la casella di controllo per eliminare le istruzioni Assert segnaposto.
Abilita commenti documentazione: selezionare la casella di controllo per fornire a ogni metodo di test commenti segnaposto. Deselezionare la casella di controllo per eliminare i commenti segnaposto.
Rispetta attributo InternalsVisibleTo: selezionare la casella di controllo in modo che i metodi contrassegnati come Friend o Internal possano essere considerati metodi pubblici (operazione consigliata). Deselezionare la casella di controllo in modo che vengano testati tramite una funzione di accesso privata. Per ulteriori informazioni sulle funzioni di accesso private, vedere Unit test per metodi privati, interni e Friend..
(Facoltativo) Per aggiungere test per metodi contenuti in assembly per cui non si dispone di codice sorgente, fare clic su Aggiungi assembly. Per ulteriori informazioni, vedere Procedura: creare uno unit test senza codice sorgente.
Nella casella Progetto di output effettuare una delle seguenti operazioni:
Per creare un nuovo progetto di test, selezionare un linguaggio per il nuovo progetto, quindi fare clic su OK. Verrà visualizzata la finestra di dialogo Nuovo progetto di test. È possibile assegnare un nome al progetto oppure accettare il nome predefinito, quindi fare clic su Crea.
Per aggiungere i metodi selezionati nella finestra di dialogo Crea unit test ai file di unit test in un progetto di test esistente, selezionare il progetto nell'elenco a discesa, quindi fare clic su OK.
Aggiungere la convalida agli unit test
Ogni metodo di test contenuto in un file di unit test viene generato con variabili vuote e con un'istruzione Assert segnaposto. È possibile eseguire un test di questo tipo, ma poiché non sono presenti dati reali, non è possibile verificare che il metodo si comporti come previsto. Per rendere significativo il test, è necessario inizializzare le variabili e sostituire l'istruzione Assert segnaposto con un'istruzione appropriata per tale metodo, in genere l'istruzione Assert.AreEqual.
Per aggiungere la convalida agli unit test
Aprire il file di unit test e individuare lo unit test per il quale si desidera inizializzare variabili.
Individuare le assegnazioni di variabili nello unit test.
Nei test appena generati, le assegnazioni di variabili sono contrassegnate con istruzioni "TODO" che ricordano di personalizzare le assegnazioni. Di seguito è riportata un'assegnazione tipica che deve essere modificata:
string target.owner = null; // TODO: Initialize to an appropriate value
Assegnare un valore appropriato a ciascuna variabile. Per un esempio di assegnazione di variabili appropriate, vedere la procedura "Eseguire e modificare uno unit test" nella Procedura dettagliata: creazione ed esecuzione di unit test.
Nota
È possibile eseguire gli unit test utilizzando una serie di valori diversi creando uno unit test basato sui dati. Uno unit test basato su dati è uno unit test che viene eseguito ripetutamente per ogni riga di un'origine dati. Per ulteriori informazioni, vedere Procedura: creare uno unit test basato sui dati.
Individuare e modificare l'istruzione Assert nello unit test. Per ulteriori informazioni sulle istruzioni Assert disponibili, vedere Utilizzo di classi Assert.
(Facoltativo) Aggiungere codice di impostazione e pulizia per gli unit test tramite i metodi [TestInitialize()] e [TestCleanup()] dello spazio dei nomi Microsoft.VisualStudio.TestTools.UnitTesting. Quando si genera uno unit test, una sezione "Attributi di test aggiuntivi" viene aggiunta al file dello unit test. Espandere questa sezione per mostrare i metodi impostati come commento che è possibile utilizzare per includere l'inizializzazione e la pulizia.
(Facoltativo) Creare una categoria di test
È possibile gestire i test automatici suddividendoli in categorie di test. Per ulteriori informazioni, vedere Definizione di categorie per raggruppare i test.
Nota
Le categorie sono da preferire rispetto agli elenchi di test. Esse consentono infatti di eseguire gruppi di test in base alle relative assegnazioni senza la necessità di mantenere elenchi dei test.
Per creare una nuova categoria di test
Aprire la finestra Visualizzazione test.
Selezionare un test.
Nel riquadro delle proprietà fare clic su Categorie di test e quindi sui puntini di sospensione (…) nella colonna all'estrema destra.
Nella finestra di dialogo Categoria test digitare il nome della nuova categoria di test nella casella Aggiungi nuova categoria.
Fare clic su Aggiungi, quindi su OK.
La nuova categoria di test verrà assegnata al test e sarà disponibile per gli altri test tramite le relative proprietà.
(Facoltativo) Creare un elenco dei test
Gli elenchi dei test consentono di organizzare gli unit test in gruppi logici. I vantaggi principali derivanti dall'aggiunta di unit test a un elenco consistono nella possibilità di eseguire test da più file di unit test, di eseguirli come parte di una compilazione e di utilizzare gli elenchi per applicare i criteri di archiviazione. Per ulteriori informazioni sugli elenchi dei test, vedere Definizione di elenchi di test per raggruppare i test.
Nota
Le categorie di test sono da preferire rispetto agli elenchi dei test. Esse consentono di eseguire gruppi di test in base alle assegnazioni senza la necessità di mantenere elenchi dei test.
Per creare un elenco di test
Dal menu Test, fare clic su Crea nuovo elenco test.
Nella finestra di dialogo Crea nuovo elenco test digitare un nome per l'elenco, aggiungere una descrizione, selezionare un percorso dell'elenco dei test, quindi fare clic su OK.
Per visualizzare i test disponibili, nella finestra Editor elenco dei test fare clic su Tutti i test caricati.
Trascinare ogni unit test che si desidera aggiungere dalla finestra principale all'elenco dei test.
Eseguire uno unit test
Dopo avere creato gli unit test, sarà possibile eseguirli in qualsiasi momento. Questa procedura rappresenta un modo per eseguire gli unit test, ma per ulteriori informazioni su modi alternativi, ad esempio l'utilizzo di tasti di scelta rapida o della riga di comando, vedere Procedura: eseguire test automatizzati da Microsoft Visual Studio.
Per eseguire uno unit test
Scegliere Finestre dal menu Test e quindi Visualizzazione test.
(Facoltativo) Se si desidera raccogliere informazioni sul code coverage, eseguire le operazioni seguenti:
Scegliere Modifica impostazioni test dal menu Test, quindi fare clic sulle impostazioni di test per l'esecuzione del test corrente.
Nella finestra di dialogo Impostazioni test fare clic su Dati e diagnostica.
In Ruolo selezionare il ruolo che si desidera utilizzare per eseguire i test.
Selezionare Code coverage, quindi fare clic su Configura.
Selezionare la casella o le caselle di controllo per selezionare gli elementi per i quali raccogliere informazioni sul code coverage.
Nella finestra di dialogo Dettaglio code coverage fare clic su OK.
Nella finestra di dialogo Impostazioni test fare clic su Applica, quindi su Chiudi.
Nella finestra Visualizzazione test selezionare uno o più test. Per selezionare più test, tenere premuto CTRL mentre si fa clic sui test.
Fare clic sul pulsante Esegui selezione sulla barra degli strumenti della finestra Visualizzazione test. Verranno eseguiti i test e verrà visualizzata la finestra Risultati test.
(Facoltativo) Per visualizzare dettagli relativi a un test, fare clic con il pulsante destro del mouse sul test nella finestra Risultati test, quindi scegliere Visualizza dettagli risultati test.
(Facoltativo) Per individuare l'area del file di unit test che contiene un errore, nella finestra di dettagli fare clic sul collegamento dell'errore in Analisi dello stack errori.
Per ulteriori informazioni sull'interpretazione dei risultati dei test, vedere Revisione dei risultati dei test.
(Facoltativo) Visualizzare il code coverage
Se si è scelto di raccogliere informazioni di code coverage, è possibile aprire la finestra Code coverage per conoscere la percentuale dei metodi nel codice sottoposto a test coperta dagli unit test. Per ulteriori informazioni sul controllo del code coverage dei test già eseguiti e per ulteriori informazioni sulla gestione dei risultati di code coverage, vedere Cenni preliminari sui dati di code coverage.
Per visualizzare il code coverage per gli unit test
Nella finestra Risultati test sulla barra degli strumenti, fare clic su Mostra risultati code coverage. Potrebbe essere necessario ingrandire la finestra per visualizzare il pulsante.
Viene aperta la finestra Risultati code coverage.
In questa finestra viene indicato quali metodi sono coperti dal test.