Unit test delle applicazioni C++ esistenti con Esplora test

È consigliabile, prima di modificare un'applicazione esistente, assicurarsi di avere una buona copertura con unit test.Questo permette di avere la certezza che le modifiche, non hanno introdotto bugs.Se l'applicazione non dispone di unit test, si possono aggiungere utilizzando le tecniche illustrate in questo argomento.In questo argomento Microsoft Visual Studio 2012 viene descritto come aggiungere unit test per codice esistente in Visual C++, partendo dalla decisione di come verificare il codice per la creazione, la scrittura e infine eseguire i test.

Decidere come testare il codice

Aprire un progetto esistente in C++ e controllarlo per decidere come si desidera aggiungere un unit test.È possibile utilizzare alcuni strumenti di modellazione, che consentono di visualizzare dipendenze nel codice e consentono di capire come le parti interagiscono.Per ulteriori informazioni, vedere Visualizzazione e comprensione del codice.

È consigliabile separare le modifiche in piccole attività.Prima di ogni piccola modifica, scrivere un unit test per gli aspetti del comportamento che rimarranno invariati.Questi test continueranno a essere superati dopo avere apportato la modifica.Ad esempio, se si prevede di modificare una funzione di ordinamento in modo che ordina un elenco di persone in base al cognome anziché per nome, è possibile scrivere uno unit test che verifica i nomi in input visualizzati nell'output.Dopo avere apportato la modifica, è possibile aggiungere nuovi unit test per un nuovo comportamento.

Se è possibile, molti o tutti gli unit test dovrebbero utilizzare solo funzioni esportate.Ma se si modifica solo una piccola parte dell'applicazione, potrebbe essere preferibile utilizzare funzioni che non vengono esportate.Ad esempio, è possibile che i test richiamano funzioni interne o test che impostano e ottengono valori da variabili interne.

Esistono diversi modi per verificare il codice prodotto, a seconda se espone le interfacce che si desidera testare.Effettuare uno dei seguenti modi:

  • Gli unit test utilizzeranno solo funzioni che sono esportate da codice sotto test:
    Aggiungere un progetto di test separato.Nel progetto di test, aggiungere una referenza al progetto incluso nel test.
Passare alla routine Per creare un progetto di test che fa riferimento al codice del progetto.
  • Il codice incluso nel test viene costruito come un file .exe:
    Aggiungere un progetto di test separato.Collegarlo al file oggetto di output.

    Passare alla routine Per creare un progetto di test che fa riferimento al codice del file oggetto.

  • Gli unit test devono utilizzare funzioni e dati privati e il codice incluso nel test può essere costruito come una libreria statica:
    Modificare il progetto incluso nel test in modo da consentirne la compilazione in un file .lib.Aggiungere un progetto di test separato che fa riferimento al progetto incluso nel test.

    Questo approccio presenta il vantaggio di consentire al test l'utilizzo di membri privati, ma mantiene i test in un progetto separato.Tuttavia, potrebbe non essere appropriato per alcune applicazioni in cui è necessario utilizzare una libreria a collegamento dinamico (.dll).

    Passare alla routine Per modificare il codice incluso nel test per una libreria statica.

  • Gli unit test devono utilizzare funzioni e dati privati e il codice deve essere costruito come una DLL(libreria a collegamento dinamico):
    Aggiungere gli unit test nello stesso progetto come il codice prodotto.

    Passare alla routine Per aggiungere unit test nello stesso progetto.

Creazione dei test

Per modificare il codice incluso nel test per una libreria statica

  • Se i test devono utilizzare membri che non vengono esportati da un progetto incluso nel test e il progetto incluso nel test viene compilato come una libreria dinamica, considerare la possibilità convertirlo in una libreria statica.

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

    2. Scegliere Proprietà di configurazione, Generale.

    3. Impostare Tipo di configurazione a Libreria statica (.lib).

Continuare con la procedura Per creare un progetto di test per funzioni esportate.

Per fare riferimento a funzioni esportate dal progetto di test

  • Se un progetto incluso nel test esporta le funzioni che si vogliono testare, è possibile aggiungere un riferimento al codice del progetto dal progetto di test.

    1. Creare un test di progetto C++.

      • Nel menu File, scegliere Nuovo, Progetto, Visual C++Test, C++ Progetto Unit Test.
    2. In Esplora soluzioni, scegliere dal menu di scelta rapida del progetto di test, scegliere Riferimenti.Verrà visualizzata la finestra proprietà del progetto.

    3. Selezionare Proprietà comuni, Framework e riferimentiquindi scegliere il pulsante Aggiungi nuovo riferimento.

    4. Selezionare Progetti, quindi il progetto da testare.

      Selezionare il pulsante Aggiungi.

    5. Nelle proprietà del progetto di test, aggiungere il percorso del progetto incluso nel test da Directory di inclusione.

      Scegliere Proprietà di configurazione, Cartelle VC++, Includi cartelle.

      Scegliere Modifica, quindi aggiungere la cartella dell'intestazione del progetto sottoposto a test

Andare a Scrittura di uno unit test.

Per collegare i test all'oggetto o a file di libreria

  • Se il codice sotto test non esporta funzioni che si desidera testare, è possibile aggiungere l'output .obj o il file .lib alle dipendenze del progetto di test.

    1. Creare un test di progetto C++.

      • Nel menu File, scegliere Nuovo, Progetto, Visual C++Test, C++ Progetto Unit Test.
    2. In Esplora soluzioni, scegliere dal menu di scelta rapida del progetto di test, scegliere Proprietà.Verrà visualizzata la finestra proprietà del progetto.

    3. Scegliere Proprietà di configurazione, Linker, Input, Dipendenze aggiuntive.

      Scegliere Modificae aggiungere i nomi dei file .lib o .obj.Non utilizzare nomi di percorso completo.

    4. Scegliere Proprietà di configurazione, Linker, Generale, Directory librerie aggiuntive.

      Scegliere Modificae aggiungere il percorso della directory dei file .lib o .obj.Il percorso è in genere contenuto nella cartella di compilazione del progetto sotto test.

    5. Scegliere Proprietà di configurazione, Cartelle VC++, Includi cartelle.

      Scegliere Modifica, quindi aggiungere la cartella dell'intestazione del progetto sottoposto a test

Andare a Scrittura di uno unit test.

Per aggiungere un unit test nello stesso progetto

  1. Modificare il codice prodotto delle proprietà del progetto per includere le intestazioni e i file di libreria necessari per l'esecuzione di unit test.

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

    2. Scegliere Proprietà di configurazione, Directory di VC++.

    3. Modificare le inclusione e le Directory librerie:

      Directory di inclusione di

      $(VCInstallDir)UnitTest\include;$(IncludePath)

      Directory della libreria

      $(VCInstallDir)UnitTest\lib;$(LibraryPath)

  2. Aggiungere un file di un test C++:

    • In Esplora soluzioni, nel menu di scelta rapida del progetto, scegliere Aggiungi, Nuovo elementoquindi Unit test di C++.

Andare a Scrittura di uno unit test.

Scrittura di un unit test

  1. In ogni file di codice dello unit test, aggiungere un'istruzione #include per le intestazioni del progetto sottoposto a test.

  2. Aggiungere le classi e i metodi di test ai file di codice dello unit test.Ad esempio:

    #include "stdafx.h"
    #include "CppUnitTest.h"
    #include "MyProjectUnderTest.h"
    using namespace Microsoft::VisualStudio::CppUnitTestFramework;
    namespace MyTest
    {
      TEST_CLASS(MyTests)
      {
      public:
          TEST_METHOD(MyTestMethod)
          {
              Assert::AreEqual(MyProject::Multiply(2,3), 6);
          }
      };
    }
    

Per ulteriori informazioni, vedere Unit test di codice nativo con Esplora test.

Eseguire i test

  1. Nel menu Visualizza, scegliere Altre finestre, Esplora test.

  2. In Esplora test, scegliere Esegui tutto.

Per ulteriori informazioni, vedere Guida introduttiva allo sviluppo basato su test con Esplora test.