Udostępnij za pośrednictwem


Testowanie istniejących aplikacji C++ z badania Explorer jednostek

Przed zmianą istniejącej aplikacji, zaleca się upewnić, że posiada on dobre pokrycie testami jednostkowymi.To pozwala się upewnić, że zmiany nie wprowadzają błędów.Jeśli aplikacja nie ma jeszcze testów jednostkowych, można je dodać przy użyciu technik opisanych w tym temacie.W tym temacie opisano sposób dodawania testów jednostkowych dla istniejącego kodu Visual C++ w Microsoft Visual Studio 2012, począwszy od wyboru sposobu testowania kodu, poprzez tworzenie pisanie, po wreszcie uruchamianie testów.

Wybór sposobu testowania kodu

Otwórz istniejący projekt C++ i sprawdź go, by zdecydować, jak chcesz dodać testy jednostkowe.Możesz chcieć użyć niektórych narzędzi modelowania, które pomogą zobaczyć zależności w kodzie i zrozumieć sposób interakcji części.Aby uzyskać więcej informacji, zobacz Wizualizacja i poznanie kodu.

Zaleca się wydzielenie zmian w małe zadania.Przed każdą małą zmianą, napisz test jednostkowy dla aspektów zachowania, które pozostaną takie same.Testy te będą nadal przekazywane po dokonaniu zmiany.Na przykład, jeśli zamierzasz zmienić funkcję sortowania, aby sortowała listę osób według nazwiska, a nie według imienia, możesz napisać test jednostkowy, który sprawdza, czy na wyjściu pojawią się wszystkie nazwy wejściowe.Po dokonaniu zmiany, możesz zechcieć dodać nowe testy jednostkowe dla nowego zachowania.

Jeśli jest to praktyczne, wiele lub wszystkie z testów jednostkowych powinny używać jedynie eksportowanych funkcji.Ale jeśli zmieniasz tylko małą część całej aplikacji, możesz chcieć użyć funkcji, które nie są eksportowane.Na przykład, możesz chcieć testy, które wywołują funkcje wewnętrzne, lub testy, które ustawiają i pobierają wartości wewnętrznych zmiennych.

Istnieje kilka sposób na przetestowanie kod produktu, w zależności od tego, czy uwidacznia on interfejsy, które chcesz przetestować.Wybierz jeden z następujących sposobów:

  • Testy jednostkowe użyją tylko funkcji, które są eksportowane z testowanego kodu:
    Dodaj osobny projekt testowy.W projekcie testowym dodaj referencje do testowanego projektu.
Przejdź do procedury Tworzenie projektu testowego, który odwołuje się do projektu kodu.
  • Testowany kod jest kompilowany jako plik .exe:
    Dodaj osobny projekt testowy.Połącz ją z wyjściowym plikiem obiektu.

    Przejdź do procedury Tworzenie projektu testowego, który odwołuje się do pliku obiektu.

  • Testy jednostkowe muszą używać prywatnych funkcji i danych, i testowany kod może być kompilowany jako biblioteka statyczna:
    Zmień testowany projekt tak, by był skompilowany do pliku .lib.Dodaj osobny projekt testowy, który odwołuje się do projektu testowanego.

    To podejście ma tę zaletę, że umożliwia testom używane prywatnych elementów członkowskich, ale nadal utrzymuje testy w osobnym projekcie.Jednakże, może to być nieodpowiednie dla niektórych aplikacji, gdzie potrzebna jest biblioteka dołączana dynamicznie (.dll).

    Przejdź do procedury Aby zmienić testowany kod na bibliotekę statyczną.

  • Testy jednostkowe muszą używać prywatnych funkcji i danych, i kod musi być kompilowany jako biblioteka dołączana dynamicznie (DLL):
    Dodaj testy jednostkowe w tym samym projekcie, co kod produktu.

    Przejdź do procedury Aby dodać testy jednostkowe w samym projekcie.

Tworzenie testów

Aby zmienić testowany kod na bibliotekę statyczną

  • Jeśli testy muszą użyć elementów członkowskich, które nie są eksportowane przez testowany projekt, i projekt testowany jest kompilowany jako biblioteka dynamiczna, rozważ jego konwersję do biblioteki statycznej.

    1. W oknie Eksploratora rozwiązania, w menu skrótów testowanego projektu, wybierz Właściwości.Otworzy się okno właściwości projektu.

    2. Wybierz Właściwości konfiguracji, Ogólne.

    3. Ustaw Typ konfiguracji na biblioteka statyczna (.lib).

Przejdź do procedury Tworzenie projektu testowego dla eksportowanych funkcji.

Aby odwołać się do eksportowanych funkcji z testowanego projektu

  • Jeśli testowany projekt eksportuje funkcje, które chcesz przetestować, możesz dodać referencje do projektu kodu z projektu testowego.

    1. Stwórz testowy projekt C++.

      • W menu Plik wybierz Nowy, Projekt, Visual C++,Test, Projekt testu jednostkowego C++.
    2. W oknie Eksploratora rozwiązania, w menu skrótów projektu testowego, wybierz Odwołania.Otworzy się okno właściwości projektu.

    3. Zaznacz Wspólne właściwości, Framework i odwołania, a następnie wybierz przycisk Dodaj nowe odwołanie.

    4. Zaznacz Projekty, a następnie projekt, który będzie testowany.

      Wybierz przycisk Dodaj.

    5. We właściwościach projektu testowego, dodaj lokalizację testowanego projektu do Dołącz katalogi.

      Wybierz Właściwości konfiguracji, Katalogi VC ++, Dołącz katalogi.

      Wybierz Edytuj, a następnie dodaj nagłówek katalogu testowanego projektu.

Przejdź do Pisanie testów jednostkowych.

Aby połączyć testy do obiektu lub plików biblioteki

  • Jeśli testowany kod nie eksportuje funkcji, które chcesz przetestować, możesz dodać plik wyjściowy .obj lub .lib do zależności testowanego projektu.

    1. Stwórz testowy projekt C++.

      • W menu Plik wybierz Nowy, Projekt, Visual C++,Test, Projekt testu jednostkowego C++.
    2. W oknie Eksploratora rozwiązania, w menu skrótów projektu testowego, wybierz Właściwości.Otworzy się okno właściwości projektu.

    3. Wybierz Właściwości konfiguracji, Konsolidator, Wejście, Dodatkowe zależności.

      Wybierz Edytuj i dodaj nazwy plików .obj lub .lib.Nie należy używać nazw pełnej ścieżki.

    4. Wybierz Właściwości konfiguracji, Konsolidator, Ogólne, Dodatkowe katalogi bibliotek.

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

    5. Wybierz Właściwości konfiguracji, Katalogi VC ++, Dołącz katalogi.

      Wybierz Edytuj, a następnie dodaj nagłówek katalogu testowanego projektu.

Przejdź do Pisanie testów jednostkowych.

Aby dodać testy jednostkowe w tym samym projekcie

  1. Zmodyfikuj właściwości projektu kodu produktu tak, aby zawierały pliki nagłówków i bibliotek, które są wymagane dla testów jednostkowych.

    1. W oknie Eksploratora rozwiązania, w menu skrótów testowanego projektu, wybierz Właściwości.Otworzy się okno właściwości projektu.

    2. Wybierz Właściwości konfiguracji, Katalogi VC++.

    3. Edytuj katalogi dołączone i biblioteki:

      Dołącz katalogi

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

      Katalogi biblioteki

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

  2. Dodaj plik testu jednostkowego C++:

    • W oknie Eksplorator rozwiązania, w menu skrótów projektu, wybierz Dodaj, Nowy element, a następnie wybierz Test jednostkowy C++.

Przejdź do Pisanie testów jednostkowych.

Pisania testów jednostkowych

  1. W każdym pliku testu jednostkowego kodu, dodaj instrukcję #include w nagłówkach testowanego projektu.

  2. Dodawaj klasy testowe i metody do plików testu jednostkowego kodu.Na przykład:

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

Aby uzyskać więcej informacji, zobacz Badania kodu macierzystego Eksploratorem Test jednostki.

Uruchom testy

  1. W menu Widok wybierz Inne okna, Eksplorator testów.

  2. W Eksploratorze testów, wybierz Uruchom wszystkie.

Aby uzyskać więcej informacji, zobacz Szybki start: tworzenie aplikacji z uwzględnieniem testów za pomocą narzędzia Eksplorator testów.