Używanie narzędzia Boost.Test dla języka C++ w programie Visual Studio
W programie Visual Studio 2017 lub nowszym karta testowa Boost.Test jest zintegrowana ze środowiskiem IDE programu Visual Studio. Jest to składnik tworzenia aplikacji klasycznych z obciążeniem języka C++ .
Jeśli nie masz zainstalowanego obciążenia Programowanie aplikacji klasycznych w języku C++, otwórz Instalator programu Visual Studio. Wybierz pakiet roboczy Programowanie aplikacji klasycznych w języku C++, a następnie wybierz przycisk Modyfikuj.
Zainstalować rozwiązanie Boost
Boost.Test wymaga boost! Jeśli nie masz zainstalowanego narzędzia Boost, zalecamy użycie menedżera pakietów Vcpkg.
Postępuj zgodnie z instrukcjami w witrynie Vcpkg: menedżer pakietów C++ dla systemu Windows , aby zainstalować narzędzie vcpkg (jeśli jeszcze go nie masz).
Zainstaluj bibliotekę dynamiczną lub statyczną Boost.Test:
Uruchom polecenie
vcpkg install boost-test
, aby zainstalować bibliotekę dynamiczną Boost.Test.— lub —
Uruchom polecenie
vcpkg install boost-test:x86-windows-static
, aby zainstalować bibliotekę statyczną Boost.Test.
Uruchom polecenie
vcpkg integrate install
, aby skonfigurować program Visual Studio z biblioteką i dołączyć ścieżki do nagłówków i plików binarnych Boost.
Możesz wybrać sposób konfigurowania testów w ramach rozwiązania w programie Visual Studio: możesz dołączyć kod testowy do projektu testowego lub utworzyć oddzielny projekt testowy dla testów. Obie opcje mają zalety i wady.
Dodawanie testów wewnątrz projektu
W programie Visual Studio 2017 w wersji 15.6 lub nowszej można dodać szablon elementu do testów do projektu. Testy i kod działają w tym samym projekcie. Aby wygenerować kompilację testową, musisz utworzyć oddzielną konfigurację kompilacji. Ponadto należy zachować testy poza kompilacjami debugowania i wydania.
W programie Visual Studio 2017 w wersji 15.5 nie są dostępne żadne wstępnie skonfigurowane szablony projektów testowych ani elementów dla aplikacji Boost.Test. Skorzystaj z instrukcji, aby utworzyć i skonfigurować oddzielny projekt testowy.
Tworzenie elementu Boost.Test
Aby utworzyć plik .cpp dla testów, kliknij prawym przyciskiem myszy węzeł projektu w Eksplorator rozwiązań i wybierz polecenie Dodaj>nowy element.
W oknie dialogowym Dodawanie nowego elementu rozwiń węzeł Zainstalowany>test Visual C++.> Wybierz pozycję Boost.Test, a następnie wybierz pozycję Dodaj , aby dodać Test.cpp do projektu.
Nowy plik Test.cpp zawiera przykładową metodę testowania. Ten plik służy do dołączania własnych plików nagłówków i pisania testów dla aplikacji.
Plik testowy używa również makr do definiowania nowej main
procedury konfiguracji testów. Jeśli teraz skompilujesz projekt, zostanie wyświetlony błąd LNK2005, taki jak "_main już zdefiniowany w main.obj".
Tworzenie i aktualizowanie konfiguracji kompilacji
Aby utworzyć konfigurację testową, na pasku menu wybierz pozycję Kompiluj>program Configuration Manager. W oknie dialogowym Configuration Manager otwórz listę rozwijaną w obszarze Konfiguracja aktywnego rozwiązania i wybierz pozycję Nowy. W oknie dialogowym Nowa konfiguracja rozwiązania wprowadź nazwę, na przykład "Debug UnitTests". W obszarze Kopiuj ustawienia wybierz pozycję Debuguj, a następnie wybierz przycisk OK.
Wyklucz kod testowy z konfiguracji debugowania i wydania: w Eksplorator rozwiązań kliknij prawym przyciskiem myszy Test.cpp i wybierz pozycję Właściwości. W oknie dialogowym Strony właściwości wybierz pozycję Wszystkie konfiguracje na liście rozwijanej Konfiguracja. Wybierz pozycję Właściwości>konfiguracji Ogólne i otwórz listę rozwijaną właściwości Wykluczone z kompilacji. Wybierz pozycję Tak, a następnie wybierz pozycję Zastosuj , aby zapisać zmiany.
Aby uwzględnić kod testowy w konfiguracji debugowania UnitTests, w oknie dialogowym Strony właściwości wybierz pozycję Debuguj testy jednostkowe na liście rozwijanej Konfiguracja . Wybierz pozycję Nie we właściwości Wykluczone z kompilacji , a następnie wybierz przycisk OK , aby zapisać zmiany.
Wyklucz kod główny z konfiguracji Debug UnitTests. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy plik zawierający
main
funkcję i wybierz polecenie Właściwości. W oknie dialogowym Strony właściwości wybierz pozycję Debuguj unitTesty na liście rozwijanej Konfiguracja. Wybierz pozycję Właściwości>konfiguracji Ogólne i otwórz listę rozwijaną właściwości Wykluczone z kompilacji. Wybierz pozycję Tak, a następnie wybierz przycisk OK , aby zapisać zmiany.Ustaw pozycję Konfiguracja rozwiązania na Debugowanie testów UnitTests, a następnie skompiluj projekt, aby umożliwić Eksploratorowi testów odnajdywanie metody.
O ile tworzona nazwa konfiguracji zaczyna się od słów "Debugowanie" lub "Wydanie", odpowiednie biblioteki Boost.Test są pobierane automatycznie.
Szablon elementu używa wariantu pojedynczego nagłówka Boost.Test, ale można zmodyfikować ścieżkę #include, aby użyć wariantu biblioteki autonomicznej. Aby uzyskać więcej informacji, zobacz Dodawanie dyrektyw dołączania.
Tworzenie oddzielnego projektu testowego
W wielu przypadkach łatwiej jest użyć oddzielnego projektu dla testów. Nie trzeba tworzyć specjalnej konfiguracji testowej dla projektu. Możesz też wykluczyć pliki testowe z kompilacji debugowania i wydania.
Aby utworzyć oddzielny projekt testowy
W Eksplorator rozwiązań kliknij prawym przyciskiem myszy węzeł rozwiązania i wybierz polecenie Dodaj>nowy projekt.
W oknie dialogowym Dodawanie nowego projektu wybierz pozycję C++, Windows i Konsola na liście rozwijanej filtru. Wybierz szablon Aplikacja konsolowa, a następnie wybierz pozycję Dalej.
Nadaj projektowi nazwę i wybierz pozycję Utwórz.
main
Usuń funkcję w pliku .cpp.Jeśli używasz pojedynczego nagłówka lub dynamicznej wersji biblioteki Boost.Test, przejdź do pozycji Dodaj dyrektywy dołączania. Jeśli używasz wersji biblioteki statycznej, musisz wykonać dodatkową konfigurację:
a. Aby edytować plik projektu, najpierw go zwolnij. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy węzeł projektu i wybierz polecenie Zwolnij projekt. Następnie kliknij prawym przyciskiem myszy węzeł projektu i wybierz polecenie Edytuj <nazwę>.vcxproj.
b. Dodaj dwa wiersze do grupy właściwości Globals , jak pokazano poniżej:
<PropertyGroup Label="Globals"> .... <VcpkgTriplet>x86-windows-static</VcpkgTriplet> <VcpkgEnabled>true</VcpkgEnabled> </PropertyGroup>
c. Zapisz i zamknij plik *.vcxproj , a następnie załaduj ponownie projekt.
d. Aby otworzyć strony właściwości, kliknij prawym przyciskiem myszy węzeł projektu i wybierz polecenie Właściwości.
e. Rozwiń węzeł Generowanie kodu C/C++>, a następnie wybierz pozycję Biblioteka środowiska uruchomieniowego. Wybierz /MTd , aby debugować statyczną bibliotekę środowiska uruchomieniowego lub /MT , aby uzyskać statyczną bibliotekę środowiska uruchomieniowego wydania.
f. Rozwiń węzeł System konsolidatora.> Sprawdź, czy podsystem jest ustawiony na konsolę.
g. Wybierz przycisk OK , aby zamknąć strony właściwości.
Dodawanie dyrektyw include
W pliku .cpp testowym dodaj wszelkie potrzebne
#include
dyrektywy, aby typy i funkcje programu działały jako widoczne dla kodu testowego. Jeśli używasz oddzielnego projektu testowego, zazwyczaj program znajduje się na poziomie równorzędnym w hierarchii folderów. Jeśli wpiszesz#include "../"
polecenie , zostanie wyświetlone okno funkcji IntelliSense i umożliwi wybranie pełnej ścieżki do pliku nagłówka.Możesz użyć autonomicznej biblioteki z:
#include <boost/test/unit_test.hpp>
Możesz też użyć wersji z jednym nagłówkiem z:
#include <boost/test/included/unit_test.hpp>
Następnie zdefiniuj wartość
BOOST_TEST_MODULE
.
Poniższy przykład jest wystarczający, aby test był wykrywalny w Eksploratorze testów:
#define BOOST_TEST_MODULE MyTest
#include <boost/test/included/unit_test.hpp> //single-header
#include "../MyProgram/MyClass.h" // project being tested
#include <string>
BOOST_AUTO_TEST_CASE(my_boost_test)
{
std::string expected_value = "Bill";
// assume MyClass is defined in MyClass.h
// and get_value() has public accessibility
MyClass mc;
BOOST_CHECK(expected_value == mc.get_value());
}
Pisanie i uruchamianie testów
Teraz możesz przystąpić do pisania i uruchamiania testów Boost. Aby uzyskać informacje na temat makr testowych, zobacz dokumentację biblioteki testowej Boost. Zobacz Uruchamianie testów jednostkowych za pomocą Eksploratora testów, aby uzyskać informacje na temat odnajdywania, uruchamiania i grupowania testów przy użyciu Eksploratora testów.