Korzystanie z platformy Microsoft Unit Testing Framework dla języka C++ w programie Visual Studio

Platforma Microsoft Unit Testing Framework dla języka C++ jest domyślnie dołączona do obciążenia Programowanie aplikacji klasycznych za pomocą języka C++ .

Aby napisać testy jednostkowe w osobnym projekcie

Zazwyczaj kod testowy jest uruchamiany we własnym projekcie w tym samym rozwiązaniu co kod, który chcesz przetestować. Aby skonfigurować i skonfigurować nowy projekt testowy, zobacz Pisanie testów jednostkowych dla języka C/C++.

Aby napisać testy jednostkowe w tym samym projekcie

W niektórych przypadkach, na przykład podczas testowania nie wyeksportowanych funkcji w dll, może być konieczne utworzenie testów w tym samym projekcie, w którym testujesz program. Aby napisać testy jednostkowe w tym samym projekcie:

  1. Zmodyfikuj właściwości projektu, aby uwzględnić nagłówki i pliki biblioteki wymagane do testowania jednostkowego.

    1. W Eksplorator rozwiązań w menu skrótów projektu, który testujesz, wybierz pozycję Właściwości. Zostanie otwarte okno właściwości projektu.

    2. W oknie dialogowym Strony właściwości wybierz pozycję Właściwości>konfiguracji Katalogi VC++.

    3. Wybierz strzałkę w dół w następujących wierszach i wybierz pozycję <Edytuj>. Dodaj następujące ścieżki:

      Katalog Właściwości
      Dołączanie katalogów $(VCInstallDir)Auxiliary\VS\UnitTest\include
      Katalogi bibliotek $(VCInstallDir)Auxiliary\VS\UnitTest\lib
  2. Dodaj plik testu jednostkowego języka C++:

    1. Kliknij prawym przyciskiem myszy węzeł projektu w Eksplorator rozwiązań i wybierz polecenie Dodaj>nowy element.

    2. W oknie dialogowym Dodawanie nowego elementu wybierz pozycję Plik C++ (cpp), nadaj mu odpowiednią nazwę, a następnie wybierz pozycję Dodaj.

Aby połączyć testy z plikami obiektów lub bibliotek

Jeśli kod testowy nie eksportuje funkcji, które chcesz przetestować, możesz dodać plik wyjściowy obj lub lib do zależności projektu testowego. Zmodyfikuj właściwości projektu testowego, aby uwzględnić nagłówki i pliki biblioteki lub obiektów wymagane do testowania jednostkowego.

  1. W Eksplorator rozwiązań w menu skrótów projektu testowego wybierz pozycję Właściwości. Zostanie otwarte okno właściwości projektu.

  2. Wybierz stronę Dane wejściowe konsolidatora >właściwości>konfiguracji, a następnie wybierz pozycję Dodatkowe zależności.

    Wybierz pozycję Edytuj i dodaj nazwy plików .obj lub .lib . Nie używaj pełnych nazw ścieżek.

  3. Wybierz stronę Ogólne konsolidatora>właściwości>konfiguracji, a następnie wybierz pozycję Dodatkowe katalogi bibliotek.

    Wybierz pozycję Edytuj i dodaj ścieżkę katalogu plików .obj lub .lib . Ścieżka jest zwykle w folderze kompilacji projektu testowego.

  4. Wybierz stronę Właściwości konfiguracji Katalogi> VC++, a następnie wybierz pozycję Dołącz katalogi.

    Wybierz pozycję Edytuj, a następnie dodaj katalog nagłówkowy projektu w ramach testu.

Pisanie testów

Każdy plik cpp z klasami testowymi musi zawierać ciąg "CppUnitTest.h" i mieć instrukcję using dla elementu using namespace Microsoft::VisualStudio::CppUnitTestFramework. Projekt testowy jest już skonfigurowany. Zawiera również definicję przestrzeni nazw oraz TEST_CLASS z TEST_METHOD, aby rozpocząć pracę. Możesz zmodyfikować nazwę przestrzeni nazw i nazwy w nawiasach w makrach klasy i metody.

Platforma testowa definiuje specjalne makra do inicjowania modułów testowych, klas i metod oraz oczyszczania zasobów po zakończeniu testów. Te makra generują kod do wykonania przed uzyskaniem dostępu do klasy lub metody, a po ostatnim uruchomieniu testu. Aby uzyskać więcej informacji, zobacz Inicjowanie i oczyszczanie.

Użyj metod statycznych w klasie Assert , aby zdefiniować warunki testu. Użyj klasy Rejestrator, aby zapisywać komunikaty w oknie danych wyjściowych. Dodawanie atrybutów do metod testowych

Uruchamianie testów

  1. W menu Test wybierz pozycję Eksplorator testów systemu Windows>.

  2. Jeśli nie wszystkie testy są widoczne w oknie, skompiluj projekt testowy, klikając prawym przyciskiem myszy jego węzeł w Eksplorator rozwiązań i wybierając polecenie Kompiluj lub Odbuduj.

  3. W Eksploratorze testów wybierz pozycję Uruchom wszystko lub wybierz określone testy, które chcesz uruchomić. Kliknij prawym przyciskiem myszy test dla innych opcji, w tym uruchomienie go w trybie debugowania z włączonymi punktami przerwania.

  4. W oknie Dane wyjściowe wybierz pozycję Testy na liście rozwijanej, aby wyświetlić komunikaty zapisane przez klasęLogger:

    C++ Output Window showing test messages

Definiowanie cech w celu włączenia grupowania

Można zdefiniować cechy metod testowych, które umożliwiają kategoryzowanie i grupowanie testów w Eksploratorze testów. Aby zdefiniować cechę, użyj makra TEST_METHOD_ATTRIBUTE . Aby na przykład zdefiniować cechę o nazwie TEST_MY_TRAIT:

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

Aby użyć zdefiniowanej cechy w testach jednostkowych:

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);
}

Makra atrybutów cech języka C++

Następujące wstępnie zdefiniowane cechy znajdują się w pliku CppUnitTest.h. Aby uzyskać więcej informacji, zobacz Microsoft Unit Testing Framework for C++ API reference (Przewodnik Microsoft Unit Testing Framework dla interfejsu API języka C++).

Makro opis
TEST_METHOD_ATTRIBUTE(attributeName, attributeValue) Użyj makra TEST_METHOD_ATTRIBUTE, aby zdefiniować cechę.
TEST_OWNER(ownerAlias) Użyj wstępnie zdefiniowanej cechy właściciela, aby określić właściciela metody testowej.
TEST_PRIORITY(priority) Użyj wstępnie zdefiniowanej cechy priorytetu, aby przypisać względne priorytety do metod testowych.