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. Sono disponibili vari adattatori di terze parti in Visual Studio Marketplace. Per altre informazioni, vedere Installare framework di unit test di terze parti.

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>nuovo progetto dal menu di scelta rapida per aggiungere il modello di progetto. Include anche opzioni che è possibile configurare tramite Opzioni strumenti>. 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. Deve essere configurato 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.

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,

  1. Fare clic con il pulsante destro del mouse sul nodo Soluzione in Esplora soluzioni.
  2. Nel menu a comparsa scegliere Aggiungi>nuovo progetto.
  3. Impostare Linguaggio su C++ e digitare "test" nella casella di ricerca. La figura seguente mostra i progetti di test disponibili quando sono installati i carichi di lavoro Sviluppo di applicazioni desktop con C++ e Sviluppo per la piattaforma UWP:

C++ Test Projects in Visual Studio 2022

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,

  1. Fare clic con il pulsante destro del mouse sul nodo Soluzione in Esplora soluzioni.
  2. Nel menu a comparsa scegliere Aggiungi>nuovo progetto.
  3. Impostare Linguaggio su C++ e digitare "test" nella casella di ricerca. La figura seguente mostra i progetti di test disponibili quando sono installati i carichi di lavoro Sviluppo di applicazioni desktop con C++ e Sviluppo per la piattaforma UWP:

C++ Test Projects in Visual Studio 2019

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. Fare clic con il pulsante destro del mouse sul nodo del progetto di test in Esplora soluzioni per un menu a comparsa. Scegliere Aggiungi>riferimento. Nella finestra di dialogo Aggiungi riferimento scegliere i progetti da testare.

Add reference

Se il codice di test non esporta le funzioni da testare, aggiungere i file con estensione obj o lib di output 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, wmainad esempio , WinMaino 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 con estensione cpp dell'unit test aggiungere quindi 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. Ripetere per qualsiasi altra intestazione.

Screenshot of the Solution Explorer showing an #include directive being added with IntelliSense highlighting a header file for inclusion.

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++. La documentazione è disponibile in Informazioni di riferimento sulle API di 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 con estensione cpp nel progetto di test include una classe stub e un metodo definiti per l'utente. 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.

Screenshot of the Test Explorer window that shows the unittest1.cpp code file containing a stub class and method using the TEST_CLASS and TEST_METHOD macros.

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

  1. Nel menu Test scegliere Finestre>Esplora test. La figura seguente illustra un progetto di test con test non ancora eseguiti.

    Test Explorer before running tests

    Nota

    L'integrazione di CTest con Esplora test non è ancora disponibile. Eseguire test CTest dal menu principale di CMake.

  2. 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.

  3. 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.

    Test Explorer after tests are run

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 l'inizializzazione, è possibile visualizzare le icone di stato del test sopra ogni unit test.

C++ CodeLens Icons

Scegliere l'icona per altre informazioni oppure eseguire o eseguire il debug dello unit test:

C++ CodeLens Run and Debug