Scrivere unit test per C/C++ in Visual Studio
È possibile scrivere ed eseguire gli unit test C++ usando la finestra Esplora test. Funziona proprio come per altre lingue. Per altre 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 di testing unità Microsoft per 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 unit test con la finestra Esplora test. Diversi adattatori non Microsoft sono disponibili nel Visual Studio Marketplace. Per altre informazioni, vedere Installare framework di unit test.
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)
L'adattatore per Google Test è incluso come componente predefinito del carico di lavoro Sviluppo di applicazioni 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> 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 del carico di lavoro Sviluppo di applicazioni 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 per CTest è incluso nel componente CMake Tools per C++, che fa parte del carico di lavoro Sviluppo di applicazioni 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.
Suggerimento
È anche possibile usare il comando copilot /tests
slash per generare unit test dal codice. Ad esempio, è possibile digitare /tests using Boost framework
per generare test Boost.Test. Per altre informazioni, vedere Usare i comandi slash in Copilot Chat.
Flusso di lavoro di test di base
Le sezioni seguenti illustrano i passaggi di base per iniziare con il testing unità in C++. La configurazione di base è simile per i framework Microsoft e Google Test. Per Boost.Test è necessario creare manualmente 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 Language su C++ e digitare test nella casella di ricerca. Lo screenshot seguente mostra i progetti di test disponibili quando sono 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, seleziona Aggiungi>Nuovo Progetto.
- Impostare Language su C++ e digitare test nella casella di ricerca. Lo screenshot seguente mostra i progetti di test disponibili quando vengono installati i carichi di lavoro Sviluppo desktop con C++ e 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. In 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, scegli i progetti da testare.
Eseguire il collegamento a file oggetto o di libreria
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 altre informazioni, vedere Per collegare i test ai file dell'oggetto o della libreria. Non includere file oggetto con una main
funzione o un altro punto di ingresso standard, wmain
ad esempio , 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 il file di intestazione
Nel file del test unitario .cpp
, aggiungi una direttiva #include
per ogni file di intestazione che dichiara i tipi e le funzioni che vuoi testare. Digitare #include "
e quindi IntelliSense viene attivato per facilitare la scelta. Ripetere per qualsiasi altra intestazione.
Suggerimento
Per evitare di dover digitare il percorso completo in ogni istruzione include nel file di origine, aggiungere le cartelle necessarie nelle directory aggiuntive aggiuntive di Project>Properties>C/C++.>>
Scrivere i metodi di test
Nota
Questa sezione mostra la sintassi per il framework di testing unità Microsoft per C/C++. Per altre informazioni, vedere Informazioni di riferimento sull'API Microsoft.VisualStudio.TestTools.CppUnitTestFramework.
Per la documentazione di Google Test, vedere Google Test primer (Introduzione a Google Test). Per Boost.Test, vedere Boost Test library: The unit test framework (Libreria di test Boost: framework di unit test).
Il file .cpp
nel tuo progetto di test ha una classe e un metodo stub definiti per te. 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 del framework di test nativo Microsoft. Esplora test consente di individuare i metodi di test in altri framework supportati in modo analogo.
TEST_METHOD restituisce void. Per produrre un risultato di test, usare i metodi statici nella Assert
classe per testare i risultati effettivi rispetto ai risultati previsti. Nell'esempio seguente si presuppone che MyClass
includa un costruttore che accetta 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 l'esito positivo o negativo del test. La Assert
classe 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 altre informazioni, vedere Eseguire unit test con Esplora test.
Eseguire i test
Nel menu Test scegliere Test Explorer. 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 Esplora test scegliere Esegui tutto o selezionare i test specifici da eseguire. Fare clic con il pulsante destro del mouse su un test per le altre opzioni, inclusa l'esecuzione in modalità di debug con i 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 altre informazioni sull'uso di Esplora test, vedere Eseguire unit test con Esplora test.
Per altre informazioni sugli unit test, vedere Nozioni di base sugli unit test.
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 la soluzione o il progetto di test.
- Ricompilare la soluzione o il progetto.
- Eseguire test dalla finestra Esplora test.
Dopo aver inizializzato CodeLens, è possibile visualizzare le icone di stato del test sopra ogni unit test.
Scegliere l'icona per altre informazioni oppure eseguire o eseguire il debug dello unit test: