테스트 탐색기를 사용하여 기존 C++ 응용 프로그램 유닛 테스트

기존 응용 프로그램을 변경하기 전에 단위 테스트로 코드가 올바른지 확인해야 합니다. 이렇게 하면 변경으로 인해 버그가 발생하지 않았음을 확신할 수 있습니다. 응용 프로그램에 아직 단위 테스트가 없으면 이 항목에 설명된 기술을 사용하여 단위 테스트를 추가할 수 있습니다. 여기서는 기존 Visual C++ 코드에 대해 코드 테스트 방법을 결정하는 것으로 시작하여 테스트를 생성 및 작성하고 마지막으로 테스트를 실행하는 단위 테스트를 추가하는 방법에 대해 설명합니다.

코드 테스트 방법 결정

기존 C++ 프로젝트를 열고 검사하여 단위 테스트를 추가할 방법을 결정합니다. 일부 모델링 도구를 사용할 수 있습니다. 이러한 도구는 코드에서 종속성을 확인하고 부분 간의 상호 작용 방식을 파악하는 데 도움이 됩니다. 자세한 내용은 코드 시각화를 참조하세요.

변경 사항을 작은 작업으로 분리하는 것이 좋습니다. 각각의 작은 변경 전에 동작에서 동일하게 유지할 측면에 대한 단위 테스트를 작성합니다. 이러한 테스트는 변경한 이후에도 계속 통과합니다. 예를 들어, 이름 대신에 성으로 사람 목록을 정렬하도록 정렬 함수를 변경하려는 경우 모든 입력 이름이 출력에 나타나는지 확인하는 단위 테스트를 작성할 수 있습니다. 변경한 후에 새 동작에 대한 새 단위 테스트를 추가할 수도 있습니다.

가능하면 단위 테스트 전체 또는 여러 부분에서 내보낼 함수만 사용해야 합니다. 그러나 전체 응용 프로그램 중 작은 부분만 변경하려는 경우에는 내보내지 않을 함수를 사용할 수 있습니다. 예를 들면 내부 함수를 호출하는 테스트나, 내부 변수 값을 설정하고 가져오는 테스트가 필요할 수 있습니다.

테스트할 인터페이스를 노출할지 여부에 따라 제품 코드를 테스트하는 방법에는 여러 가지가 있습니다. 다음 방법 중 하나를 선택합니다.

단위 테스트에는 테스트 중인 코드에서 내보낸 함수만 사용됩니다.
개별 테스트 프로젝트를 추가합니다. 테스트 프로젝트에서 테스트 중인 프로젝트에 대한 참조를 추가합니다.

테스트 프로젝트에서 내보낸 함수를 참조하려면 절차로 이동합니다.

테스트 중인 코드가 .exe 파일로 빌드됩니다.
개별 테스트 프로젝트를 추가합니다. 출력 개체 파일에 연결합니다.

개체 또는 라이브러리 파일에 테스트를 연결하려면 절차로 이동합니다.

단위 테스트는 개인 함수와 데이터를 사용해야 하며 테스트 중인 코드를 정적 라이브러리로 빌드할 수 있습니다.
.lib 파일로 컴파일되도록 테스트 중인 프로젝트를 변경합니다. 테스트 중인 프로젝트를 참조하는 개별 테스트 프로젝트를 추가합니다.

이 접근 방법은 테스트에서 전용 멤버를 사용할 수 있다는 이점이 있지만, 테스트를 여전히 별도 프로젝트로 유지해야 합니다. 하지만 동적 연결 라이브러리(.dll)가 필요한 응용 프로그램에는 적합하지 않을 수도 있습니다.

테스트 중인 코드를 정적 라이브러리로 변경하려면 절차로 이동합니다.

단위 테스트는 개인 함수 및 데이터를 사용해야 하며 코드를 DLL(동적 연결 라이브러리)로 빌드해야 합니다.
제품 코드와 동일한 프로젝트에 단위 테스트를 추가합니다.

동일한 프로젝트에 단위 테스트를 추가하려면 절차로 이동합니다.

테스트 만들기

  • 테스트 중인 프로젝트에서 내보내지 않는 멤버를 테스트에 사용해야 하며 테스트 중인 프로젝트가 동적 라이브러리로 빌드되는 경우에는 정적 라이브러리로 변환하는 것을 고려해 보세요.

    1. 솔루션 탐색기의 테스트 중인 프로젝트의 바로 가기 메뉴에서 속성을 선택합니다. 프로젝트 속성 창이 열립니다.

    2. 구성 속성, 일반을 선택합니다.

    3. 구성 형식정적 라이브러리(.lib)로 설정합니다.

    개체 또는 라이브러리 파일에 테스트를 연결하려면 절차를 계속 진행합니다.

테스트 프로젝트에서 내보낸 함수를 참조하려면

  • 테스트 중인 프로젝트에서 테스트할 함수를 내보내는 경우 테스트 프로젝트에서 코드 프로젝트에 대한 참조를 추가할 수 있습니다.

    1. C++ 테스트 프로젝트를 만듭니다.

      1. 파일 메뉴에서 새로 만들기, 프로젝트, Visual C++, 테스트, C++ 단위 테스트 프로젝트를 차례로 선택합니다.
    2. 솔루션 탐색기의 테스트 프로젝트 바로 가기 메뉴에서 참조를 선택합니다. 프로젝트 속성 창이 열립니다.

    3. 공용 속성, 프레임워크 및 참조를 선택하고 새 참조 추가 단추를 선택합니다.

    4. 프로젝트를 선택하고 테스트할 프로젝트를 선택합니다.

      추가 단추를 선택합니다.

    5. 테스트 프로젝트에 대한 속성에서 테스트 중인 프로젝트의 위치를 포함 디렉터리에 추가합니다.

      구성 속성, VC++ 디렉터리, 포함 디렉터리를 차례로 선택합니다.

      편집을 선택하고 테스트 중인 프로젝트의 헤더 디렉터리를 추가합니다.

    단위 테스트 작성으로 이동합니다.

개체 또는 라이브러리 파일에 테스트를 연결하려면

  • 테스트 중인 코드에서 테스트할 함수를 내보내지 않는 경우 .obj 또는 .lib 출력 파일을 테스트 프로젝트의 종속성에 추가할 수 있습니다.

    1. C++ 테스트 프로젝트를 만듭니다.

      1. 파일 메뉴에서 새로 만들기, 프로젝트, Visual C++, 테스트, C++ 단위 테스트 프로젝트를 차례로 선택합니다.
    2. 솔루션 탐색기의 테스트 프로젝트 바로 가기 메뉴에서 속성을 선택합니다. 프로젝트 속성 창이 열립니다.

    3. 구성 속성, 링커, 입력, 추가 종속성을 선택합니다.

      편집을 선택하고 .obj 또는 .lib 파일의 이름을 추가합니다. 전체 경로 이름을 사용하지 마세요.

    4. 구성 속성, 링커, 일반, 추가 라이브러리 디렉터리를 차례로 선택합니다.

      편집을 선택하고 .obj 또는 .lib 파일의 디렉터리 경로를 추가합니다. 일반적으로 이 경로는 테스트 중인 프로젝트의 빌드 폴더에 있습니다.

    5. 구성 속성, VC++ 디렉터리, 포함 디렉터리를 차례로 선택합니다.

      편집을 선택하고 테스트 중인 프로젝트의 헤더 디렉터리를 추가합니다.

    단위 테스트 작성으로 이동합니다.

동일 프로젝트에 단위 테스트를 추가하려면

  1. 유닛 테스트에 필요한 헤더 및 라이브러리 파일을 포함하도록 제품 코드 프로젝트 속성을 수정합니다.

    1. 솔루션 탐색기의 테스트 중인 프로젝트의 바로 가기 메뉴에서 속성을 선택합니다. 프로젝트 속성 창이 열립니다.

    2. 구성 속성, VC++ 디렉터리를 선택합니다.

    3. 포함 및 라이브러리 디렉터리를 편집합니다.

      포함 디렉터리 $(VCInstallDir)UnitTest\include;$(IncludePath)
      라이브러리 디렉터리 $(VCInstallDir)UnitTest\lib;$(LibraryPath)
  2. C++ 단위 테스트 파일 추가:

    • 솔루션 탐색기의 프로젝트 바로 가기 메뉴에서 추가, 새 항목, C++ 단위 테스트를 차례로 선택합니다.

    단위 테스트 작성으로 이동합니다.

단위 테스트 작성

  1. 각 단위 테스트 코드 파일에서 테스트 중인 프로젝트의 헤더에 대해 #include 문을 추가합니다.

  2. 테스트 클래스와 메서드를 단위 테스트 코드 파일에 추가합니다. 예:

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

    자세한 내용은 테스트 탐색기를 사용하여 네이티브 코드 유닛 테스트를 참조하세요.

테스트 실행

  1. 보기 메뉴에서 다른 창, 테스트 탐색기를 선택합니다.

  2. 테스트 탐색기에서 모두 실행을 선택합니다.

    자세한 내용은 빠른 시작: 테스트 탐색기를 사용한 테스트 기반 개발을 참조하세요.