Visual Studio에서 C/C++에 대한 단위 테스트 작성
테스트 탐색기 창을 사용하여 C++ 단위 테스트를 작성하고 실행할 수 있습니다. 다른 언어에서와 마찬가지로 작동합니다. 테스트 탐색기사용하는 방법에 대한 자세한 내용은 테스트 탐색기 사용하여 단위 테스트 실행참조하세요.
메모
Live Unit Testing, 코딩된 UI 테스트 및 IntelliTest와 같은 일부 기능은 C++에서 지원되지 않습니다.
Visual Studio에는 추가 다운로드 없이 다음 C++ 테스트 프레임워크가 포함되어 있습니다.
- C++용 Microsoft 단위 테스트 프레임워크
- 구글 테스트
- Boost.Test
- CTest
설치된 프레임워크를 사용하거나 Visual Studio 내에서 사용하려는 프레임워크에 대해 고유한 테스트 어댑터를 작성할 수 있습니다. 테스트 어댑터는 단위 테스트를 테스트 탐색기 창과 통합합니다. Microsoft 이외의 여러 어댑터는 Visual Studio Marketplace사용할 수 있습니다. 자세한 내용은 단위 테스트 프레임워크설치를 참조하세요.
Visual Studio 2017 이상(Professional 및 Enterprise)
Visual Studio 2017 이상(모든 버전)
Google Test Adapter C++ 워크로드를 사용하는 Desktop 개발의 기본 구성 요소로 포함됩니다. 솔루션에 추가할 수 있는 프로젝트 템플릿이 있습니다. 솔루션 탐색기 솔루션 노드를 마우스 오른쪽 단추로 클릭하고 바로 가기 메뉴에서 추가>새 프로젝트 선택하여 프로젝트 템플릿을 추가합니다. 또한 도구>옵션사용하여 구성할 수 있는 옵션도 있습니다. 자세한 내용은 Visual Studio에서 Google Test를 사용하는 방법을 참조하십시오.
Boost.Test C++ 워크로드를 사용하는 Desktop 개발의 기본 구성 요소로 포함됩니다. 테스트 탐색기통합되었지만 현재 프로젝트 템플릿이 없습니다. 수동으로 구성해야 합니다. 자세한 내용은 방법: Visual Studio에서 Boost.Test 사용을 참조하세요.
CTest 지원은 C++ 워크로드를 사용하는 Desktop 개발의 일부인 C++ CMake 도구 구성 요소에 포함됩니다. 자세한 내용은 어떻게 Visual Studio에서 CTest를 사용하는지을 참조하십시오.
이전 버전의 Visual Studio
Visual Studio Marketplace에서 Google Test 어댑터 및 Boost.Test 어댑터 확장을 다운로드할 수 있습니다. Boost.Test 테스트 어댑터 및 Google Test테스트 어댑터에서 찾을 수 있습니다.
팁
Copilot /tests
슬래시 명령을 사용하여 코드에서 단위 테스트를 생성할 수도 있습니다. 예를 들어 /tests using Boost framework
입력하여 Boost.Test 테스트를 생성할 수 있습니다. 자세한 내용은 Copilot Chat슬래시 명령 사용을 참조하세요.
기본 테스트 워크플로
다음 섹션에서는 C++ 단위 테스트를 시작하는 기본 단계를 보여줍니다. 기본 구성은 Microsoft 및 Google Test 프레임워크 모두에 대해 유사합니다. Boost.Test를 사용하려면 테스트 프로젝트를 수동으로 만들어야 합니다.
Visual Studio 2022에서 테스트 프로젝트 만들기
하나 이상의 테스트 프로젝트내에서 단위 테스트를 정의하고 실행합니다. 테스트 프로젝트는 실행 파일에서 코드를 호출하고 해당 동작을 보고하는 별도의 앱을 만듭니다. 테스트하려는 코드와 동일한 솔루션에 테스트 프로젝트를 만듭니다.
기존 솔루션에 새 테스트 프로젝트를 추가하려면 다음을 수행합니다.
- 솔루션 탐색기솔루션 노드를 마우스 오른쪽 단추로 클릭합니다.
- 상황에 맞는 메뉴에서 추가>새 프로젝트선택합니다.
- 언어을 C++로 설정하고, 검색 상자에 테스트를 입력합니다. 다음 스크린샷은 C++ 데스크톱 개발 및 UWP 개발 워크로드가 설치될 때 사용할 수 있는 테스트 프로젝트를 보여줍니다.
Visual Studio 2019에서 테스트 프로젝트 만들기
하나 이상의 테스트 프로젝트 내에서 테스트를 정의하고 실행합니다. 테스트하려는 코드와 동일한 솔루션에 프로젝트를 만듭니다.
기존 솔루션에 새 테스트 프로젝트를 추가하려면 다음을 수행합니다.
- 솔루션 탐색기솔루션 노드를 마우스 오른쪽 단추로 클릭합니다.
- 상황에 맞는 메뉴에서 추가>새 프로젝트선택합니다.
- 언어 C++ 설정하고 검색 상자에 테스트 입력합니다. 다음 스크린샷은 C++ 데스크톱 개발 및 UWP 개발 워크로드가 설치될 때 사용할 수 있는 테스트 프로젝트를 보여줍니다.
솔루션의 다른 프로젝트에 대한 참조 만들기
테스트 중인 프로젝트의 함수에 액세스할 수 있도록 하려면 테스트 프로젝트의 프로젝트에 대한 참조를 추가합니다. 솔루션 탐색기테스트 프로젝트를 확장합니다. 참조 마우스 오른쪽 단추로 클릭한 다음 >참조추가를 선택합니다. 참조 추가 대화 상자에서 테스트할 프로젝트를 선택합니다.
개체 또는 라이브러리 파일에 연결
테스트 코드에서 테스트하려는 함수를 내보내지 않는 경우 출력 .obj
또는 .lib
파일을 테스트 프로젝트의 종속성에 추가합니다. 자세한 내용은 개체 또는 라이브러리 파일에 테스트를 연결하려면 을 참조하세요.
main
함수나 wmain
, WinMain
또는 DllMain
같은 다른 표준 진입점이 있는 개체 파일은 포함하지 마세요. 프로젝트에 새 원본 파일을 추가할 때 해당 개체 파일을 포함하도록 테스트 프로젝트 종속성을 업데이트합니다.
헤더 파일에 대한 #include 지시문 추가
단위 테스트 .cpp
파일에서 테스트하려는 형식과 함수를 선언하는 헤더 파일에 대한 #include
지시문을 추가합니다.
#include "
입력한 다음 IntelliSense가 활성화되어 선택하는 데 도움이 됩니다. 추가 헤더에 대해 반복하십시오.
팁
원본 파일의 각 include 문에 전체 경로를 입력하지 않도록 하려면 필요한 폴더를 Project>속성>C/C++>일반>추가 포함 디렉터리추가합니다.
테스트 메서드 작성
메모
이 섹션에서는 C/C++용 Microsoft Unit Testing Framework 구문을 보여줍니다. 자세한 내용은 microsoft.VisualStudio.TestTools.CppUnitTestFramework API 참조 참조하세요.
Google Test 설명서는 Google Test 입문서를 참조하세요. Boost.Test의 경우 Boost 테스트 라이브러리: 단위 테스트 프레임워크참조하세요.
테스트 프로젝트의 .cpp
파일에는 스텁 클래스와 메서드가 정의되어 있습니다. 테스트 코드를 작성하는 방법의 예를 보여줍니다. 서명은 TEST_CLASS 및 TEST_METHOD 매크로를 사용하여 테스트 탐색기 창에서 메서드를 검색할 수 있도록 합니다.
TEST_CLASS 및 TEST_METHOD Microsoft 네이티브 테스트 프레임워크 일부입니다. 테스트 탐색기 비슷한 방식으로 지원되는 다른 프레임워크에서 테스트 메서드를 검색합니다.
TEST_METHOD void를 반환합니다. 테스트 결과를 생성하려면 Assert
클래스의 정적 메서드를 사용하여 예상 결과에 대해 실제 결과를 테스트합니다. 다음 예제에서는 MyClass
가 std::string
을 매개변수로 갖는 생성자가 있다고 가정합니다. 이 예제에서는 생성자가 예상대로 클래스를 초기화하는지 테스트하는 방법을 보여 줍니다.
TEST_METHOD(TestClassInit)
{
std::string name = "Bill";
MyClass mc(name);
Assert::AreEqual(name, mc.GetName());
}
이전 예제에서 Assert::AreEqual
호출의 결과는 테스트가 통과하거나 실패하는지 여부를 결정합니다.
Assert
클래스에는 예상 결과를 실제 결과와 비교하는 다른 많은 메서드가 포함되어 있습니다.
테스트 메서드에 특성 추가하여 테스트 소유자, 우선 순위 및 기타 정보를 지정할 수 있습니다. 그런 다음 이러한 값을 사용하여 테스트 탐색기 테스트를 정렬하고 그룹화할 수 있습니다. 자세한 내용은 테스트 탐색기 사용하여 단위 테스트 실행참조하세요.
테스트 실행
테스트 메뉴에서 테스트 탐색기를 선택합니다. 다음 그림에서는 테스트를 실행하기 전에 테스트 프로젝트를 보여 줍니다.
메모
테스트 탐색기 CTest 통합은 아직 사용할 수 없습니다. CMake 주 메뉴에서 CTest 테스트를 실행합니다.
창에서 테스트가 누락된 경우 솔루션 탐색기에서 해당 노드를 마우스 오른쪽 단추로 클릭하고 빌드 또는 다시 빌드를 선택하여 테스트 프로젝트를 빌드합니다.
테스트 탐색기에서 모두 실행을 선택하거나 실행하려는 특정 테스트를 선택합니다. 중단점을 사용하도록 설정된 디버그 모드에서 실행하는 등 다른 옵션에 대한 테스트를 마우스 오른쪽 단추로 클릭합니다. 모든 테스트를 실행한 후에는 통과한 테스트와 실패한 테스트가 창에 표시됩니다.
실패한 테스트의 경우 메시지에 원인을 진단하는 데 도움이 되는 세부 정보가 표시됩니다. 팝업 메뉴에 대한 실패한 테스트를 마우스 오른쪽 단추로 클릭합니다. 디버그 선택하여 오류가 발생한 함수를 단계별로 실행합니다.
테스트 탐색기사용하는 방법에 대한 자세한 내용은 테스트 탐색기 사용하여 단위 테스트 실행참조하세요.
단위 테스트에 대한 자세한 내용은 단위 테스트 기본 사항을 참조하세요.
CodeLens 사용
Visual Studio 2017 이상(Professional 및 Enterprise 버전)
codeLens 코드 편집기를 종료하지 않고도 단위 테스트의 상태를 빠르게 볼 수 있습니다.
다음과 같은 방법으로 C++ 단위 테스트 프로젝트에 대한 CodeLens를 초기화합니다.
- 테스트 프로젝트 또는 솔루션을 편집하고 빌드합니다.
- 프로젝트 또는 솔루션을 다시 빌드합니다.
- 테스트 탐색기 창에서 테스트를 실행합니다.
CodeLens를 초기화한 후 각 단위 테스트 위의 테스트 상태 아이콘을 볼 수 있습니다.
자세한 내용을 보려면 아이콘을 선택하거나 단위 테스트를 실행하거나 디버그합니다.