Scrivere unit test per C/C++ in Visual Studio
È possibile scrivere ed eseguire i test unitari C++ usando la finestra Esplora test. Funziona proprio come per altre lingue. Per ulteriori informazioni sull'uso di Esplora Test , vedere Eseguire unit test con Esplora Test.
Nota
Alcune funzionalità, ad esempio Live Unit Testing, test codificati dell'interfaccia utente e IntelliTest, non sono supportate per C++.
Visual Studio include questi framework di test C++ senza download aggiuntivi necessari:
- Framework Microsoft per il testing delle unità in C++
- Google Test
- Boost.Test
- CTest
È possibile usare i framework installati o scrivere un adattatore di test personalizzato per qualsiasi framework che si vuole usare in Visual Studio. Un adattatore di test integra i test unità con la finestra Esplora Test. Diversi adattatori non Microsoft sono disponibili nel Visual Studio Marketplace. Per ulteriori informazioni, vedere Installazione dei framework di test dell'unità.
Visual Studio 2017 e versioni successive (Professional ed Enterprise)
I progetti di unit test C++ supportano CodeLens.
Visual Studio 2017 e versioni successive (tutte le edizioni)
Google Test Adapter è incluso come componente predefinito del carico di lavoro sviluppo desktop con C++ . Ha un modello di progetto che è possibile aggiungere a una soluzione. Fare clic con il pulsante destro del mouse sul nodo della soluzione in esplora soluzioni e scegliere Aggiungi>Nuovo progetto dal menu di scelta rapida per aggiungere il modello di progetto. Include anche opzioni che è possibile configurare usando strumenti di >Opzioni. Per altre informazioni, vedere Procedura: Usare Google Test in Visual Studio.
Boost.Test è incluso come componente predefinito dell'ambiente di sviluppo desktop con C++. È integrato con Esplora test, ma attualmente non ha un modello di progetto. È necessario configurarlo manualmente. Per altre informazioni, vedere Procedura: Usare Boost.Test in Visual Studio.
Il supporto di CTest è incluso nel componente strumenti CMake C++, che è parte del carico di lavoro 'Sviluppo Desktop con C++' . Per altre informazioni, vedere Procedura: Usare CTest in Visual Studio.
Versioni precedenti di Visual Studio
È possibile scaricare l'adapter Google Test e le estensioni Boost.Test Adapter in Visual Studio Marketplace. Trovarli in adattatore di test per Boost.Test e adattatore di test per Google Test.
Mancia
È anche possibile usare il comando slash Copilot /tests
per generare test unitari dal codice. Ad esempio, è possibile digitare /tests using Boost framework
per generare test Boost.Test. Per altre informazioni, vedere Usare i comandi slash in Chat Copilot.
Flusso di lavoro di test di base
Le sezioni seguenti illustrano i passaggi di base per iniziare a usare gli unit test C++. La configurazione di base è simile per i framework Microsoft e Google Test. Boost.Test richiede la creazione manuale di un progetto di test.
Creare un progetto di test in Visual Studio 2022
Definire ed eseguire unit test all'interno di uno o più progetti di test . Un progetto di test crea un'app separata che chiama il codice nel file eseguibile e ne segnala il comportamento. Creare progetti di test nella stessa soluzione del codice da testare.
Per aggiungere un nuovo progetto di test a una soluzione esistente:
- Fare clic con il pulsante destro del mouse sul nodo Soluzione in Esplora soluzioni .
- Nel menu di scelta rapida scegliere Aggiungi>Nuovo progetto.
- Impostare lingua su C++ e digitare test nella casella di ricerca. Lo screenshot seguente mostra i progetti di test che sono disponibili quando vengono installati i carichi di lavoro Sviluppo desktop con C++ e sviluppo UWP:
Creare un progetto di test in Visual Studio 2019
Definire ed eseguire test all'interno di uno o più progetti di test. Creare i progetti nella stessa soluzione del codice da testare.
Per aggiungere un nuovo progetto di test a una soluzione esistente:
- Fare clic con il pulsante destro del mouse sul nodo Soluzione in Esplora soluzioni .
- Nel menu di scelta rapida scegliere Aggiungi>Nuovo progetto.
- Impostare Language su C++ e digitare test nella casella di ricerca. Il seguente screenshot mostra i progetti di test disponibili quando sono installati i workload Sviluppo Desktop con C++ e lo sviluppo UWP :
Creare riferimenti ad altri progetti nella soluzione
Per abilitare l'accesso alle funzioni nel progetto sottoposto a test, aggiungere un riferimento al progetto nel progetto di test. Nella Esplora soluzioni, espandi il progetto di test. Fare clic con il pulsante destro del mouse su riferimenti e quindi selezionare Aggiungi>riferimento. Nella finestra di dialogo Aggiungi riferimento scegliere i progetti da testare.
Collegamento a file di oggetti o librerie
Se il codice di test non esporta le funzioni da testare, aggiungere i file di output .obj
o .lib
alle dipendenze del progetto di test. Per ulteriori informazioni, vedere per collegare i test ai file oggetto o ai file di libreria. Non includere file oggetto con una funzione main
o un altro punto di ingresso standard, ad esempio wmain
, WinMain
o DllMain
. Quando si aggiungono nuovi file di origine al progetto, aggiornare le dipendenze del progetto di test in modo da includere i file oggetto corrispondenti.
Aggiungere direttive #include per i file di intestazione
Nel file di unit test .cpp
aggiungere una direttiva #include
per tutti i file di intestazione che dichiarano i tipi e le funzioni da testare. Digitare #include "
e quindi IntelliSense viene attivato per facilitare la scelta. Ripeti per eventuali altre intestazioni.
Suggerimento
Per evitare di dover digitare il percorso completo in ogni istruzione di inclusione nel file di origine, aggiungere le cartelle necessarie in Project>Proprietà>C/C++>Generale>Directory di Inclusione Aggiuntive.
Scrivere metodi di test
Nota
Questa sezione illustra la sintassi per Microsoft Unit Testing Framework per C/C++. Per altre informazioni, vedere Informazioni di riferimento sull'API Microsoft.VisualStudio.TestTools.CppUnitTestFramework.
Per la documentazione di Google Test, vedere introduzione a Google Test. Per Boost.Test, vedere Libreria di Test Boost: Framework di unit test.
Il file .cpp
nel progetto di test include una classe e un metodo stub definiti. Illustrano un esempio di come scrivere codice di test. Le firme usano le macro TEST_CLASS e TEST_METHOD, che rendono individuabili i metodi dalla finestra esplora test.
TEST_CLASS e TEST_METHOD fanno parte di Microsoft Native Test Framework. Esplora test individua i metodi di test in altri framework supportati in modo analogo.
Un TEST_METHOD restituisce 'void'. Per produrre un risultato di test, usare i metodi statici nella classe Assert
per testare i risultati effettivi rispetto ai risultati previsti. Nell'esempio seguente si supponga che MyClass
abbia un costruttore che accetta un std::string
. In questo esempio viene illustrato come verificare che il costruttore inizializzi la classe nel modo previsto:
TEST_METHOD(TestClassInit)
{
std::string name = "Bill";
MyClass mc(name);
Assert::AreEqual(name, mc.GetName());
}
Nell'esempio precedente, il risultato della chiamata Assert::AreEqual
determina se il test passa o fallisce. La classe Assert
contiene molti altri metodi per confrontare i risultati previsti con i risultati effettivi.
È possibile aggiungere tratti ai metodi di test per specificare proprietari di test, priorità e altre informazioni. È quindi possibile usare questi valori per ordinare e raggruppare i test in Esplora test . Per ulteriori informazioni, vedere Esegui i test unitari con Esplora Test.
Eseguire i test
Nel menu Test, scegliere Esplora Test. La figura seguente mostra un progetto di test prima di eseguire i test.
Nota
L'integrazione di CTest con Esplora test non è ancora disponibile. Eseguire test CTest dal menu principale di CMake.
Se uno dei test non è presente nella finestra, compilare il progetto di test facendo clic con il pulsante destro del mouse sul relativo nodo in Esplora soluzioni e scegliendo Compila o Ricompila.
In Test Explorer, scegli Esegui tuttio seleziona i test specifici che desideri eseguire. Fare clic con il pulsante destro del mouse su un test per altre opzioni, inclusa l'esecuzione in modalità di debug con punti di interruzione abilitati. Dopo l'esecuzione di tutti i test, nella finestra vengono visualizzati i test superati e quelli non riusciti.
Per i test non riusciti, il messaggio visualizza i dettagli che consentono di diagnosticare la causa. Fare clic con il pulsante destro del mouse sul test non superato per un menu a comparsa. Scegliere Debug per scorrere la funzione in cui si è verificato l'errore.
Per ulteriori informazioni sull'uso di Test Explorer , vedere Eseguire i test unitari con Test Explorer.
Per ulteriori informazioni sui test unitari, vedere Test unitario di base.
Usare CodeLens
Visual Studio 2017 e versioni successive (edizioni Professional ed Enterprise)
CodeLens consente di visualizzare rapidamente lo stato di uno unit test senza uscire dall'editor di codice.
Inizializzare CodeLens per un progetto di unit test C++ in uno dei modi seguenti:
- Modificare e compilare il progetto o la soluzione di test.
- Ricompilare il progetto o la soluzione.
- Esegui test dalla finestra "Test Explorer" .
Dopo aver inizializzato CodeLens, è possibile visualizzare le icone di stato del test sopra ogni unit test.
Scegliere l'icona per altre informazioni oppure per eseguire o fare il debug dell'unità di test: