Usare il framework di testing unità Microsoft per C++ in Visual Studio

Per impostazione predefinita il framework di testing unità Microsoft per C++ è incluso nel carico di lavoro Sviluppo di applicazioni desktop con C++.

Per scrivere unit test in un progetto separato

In genere, il codice di test viene eseguito nel relativo progetto nella stessa soluzione del codice da testare. Per impostare e configurare un nuovo progetto di test, vedere Scrittura di unit test per C/C++.

Per scrivere unit test nello stesso progetto

In alcuni casi, ad esempio durante il test di funzioni non esportate in una DLL, può essere necessario creare i test nello stesso progetto del programma che si sta testando. Per scrivere unit test nello stesso progetto:

  1. Modificare le proprietà del progetto per includere le intestazioni e i file di libreria necessari per il testing unità.

    1. In Esplora soluzioni scegliere Proprietà dal menu di scelta rapida del progetto di cui si sta testando. Verrà visualizzata la finestra delle proprietà del progetto.

    2. Nella finestra di dialogo Pagine delle proprietà selezionare Proprietà>di configurazione Directory VC++.

    3. Selezionare la freccia giù nelle righe seguenti e scegliere <Modifica>. Aggiungere questi percorsi:

      Directory Proprietà
      Directory di inclusione $(VCInstallDir)Auxiliary\VS\UnitTest\include
      Directory delle librerie $(VCInstallDir)Auxiliary\VS\UnitTest\lib
  2. Aggiungere un file di unit test C++:

    1. Fare clic con il pulsante destro del mouse sul nodo del progetto in Esplora soluzioni e scegliere Aggiungi>nuovo elemento.

    2. Nella finestra di dialogo Aggiungi nuovo elemento selezionare File C++ (con estensione cpp), assegnargli un nome appropriato e quindi scegliere Aggiungi.

Per collegare i test ai file dell'oggetto o della libreria

Se il codice sottoposto a test non esporta le funzioni da testare, è possibile aggiungere il file con estensione obj o lib di output alle dipendenze del progetto di test. Modificare le proprietà del progetto di test per includere le intestazioni e i file di libreria o oggetti necessari per gli unit test.

  1. In Esplora soluzioni scegliere Proprietà dal menu di scelta rapida del progetto di test. Verrà visualizzata la finestra delle proprietà del progetto.

  2. Selezionare la pagina Input del linker>proprietà>di configurazione, quindi selezionare Dipendenze aggiuntive.

    Scegliere Modifica e aggiungere i nomi dei file con estensione obj o lib. Non usare i nomi completi dei percorsi.

  3. Selezionare la pagina Generale del linker>proprietà>di configurazione, quindi selezionare Directory di libreria aggiuntive.

    Scegliere Modifica e aggiungere il percorso della directory dei file con estensione obj o lib. Il percorso è in genere contenuto nella cartella di compilazione del progetto sottoposto a test.

  4. Selezionare la pagina Directory vc++ delle>proprietà di configurazione e quindi selezionare Includi directory.

    Scegliere Modifica e quindi aggiungere la directory dell'intestazione del progetto sottoposto a test.

Scrivere i test

Tutti i file CPP con classi di test devono includere "CppUnitTest.h" e avere un'istruzione using per using namespace Microsoft::VisualStudio::CppUnitTestFramework. Il progetto di test è già configurato. Include anche una definizione dello spazio dei nomi e una TEST_CLASS con un TEST_METHOD per iniziare. È possibile modificare il nome dello spazio dei nomi e i nomi tra parentesi nelle macro della classe e del metodo.

Il framework di test definisce macro speciali per l'inizializzazione di moduli di test, classi e metodi e per la pulizia delle risorse dopo il completamento dei test. Queste macro generano codice da eseguire prima dell'accesso a una classe o a un metodo e dopo l'esecuzione dell'ultimo test. Per altre informazioni, vedere Initialize and cleanup (Inizializzare ed eseguire la pulizia).

Usare i metodi statici nella classe Assert per definire le condizioni di test. Usare la classe Logger per scrivere messaggi nella finestra di output. Aggiungere attributi ai metodi di test

Eseguire i test

  1. Nel menu Test scegliere Finestre>Esplora test.

  2. Se non tutti i test sono visibili 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.

  4. Nella finestra di output scegliere Test nell'elenco a discesa per visualizzare i messaggi scritti dalla Logger classe :

    C++ Output Window showing test messages

Definire i tratti per abilitare il raggruppamento

È possibile definire tratti sui metodi di test, che consentono di classificare e raggruppare i test in Esplora test. Per definire un tratto, usare la macro TEST_METHOD_ATTRIBUTE . Ad esempio, per definire un tratto denominato TEST_MY_TRAIT:

#define TEST_MY_TRAIT(traitValue) TEST_METHOD_ATTRIBUTE(L"MyTrait", traitValue)

Per usare il tratto definito negli unit test:

BEGIN_TEST_METHOD_ATTRIBUTE(Method1)
    TEST_OWNER(L"OwnerName")
    TEST_PRIORITY(1)
    TEST_MY_TRAIT(L"thisTraitValue")
END_TEST_METHOD_ATTRIBUTE()

TEST_METHOD(Method1)
{
    Logger::WriteMessage("In Method1");
    Assert::AreEqual(0, 0);
}

Macro di attributo di tratto C++

I tratti predefiniti seguenti sono disponibili in CppUnitTest.h. Per altre informazioni, vedere le informazioni di riferimento sulle API del framework di testing unità Microsoft per C++.

Macro Descrizione
TEST_METHOD_ATTRIBUTE(attributeName, attributeValue) Usare la macro TEST_METHOD_ATTRIBUTE per definire un tratto.
TEST_OWNER(ownerAlias) Usare il tratto Owner predefinito per specificare un proprietario del metodo di test.
TEST_PRIORITY(priority) Usare il tratto Priority predefinito per assegnare priorità relative ai metodi di test.