IT박스

Visual Studio 2005에서 Google C ++ 테스트 프레임 워크 (gtest)를 설정하는 방법

itboxs 2020. 10. 5. 07:45
반응형

Visual Studio 2005에서 Google C ++ 테스트 프레임 워크 (gtest)를 설정하는 방법


웹 사이트에 문서화되어 있지 않으며 사람들이 프레임 워크를 설정하는 데 문제가있는 것 같습니다. 누군가 샘플 프로젝트 설정에 대한 단계별 소개를 보여줄 수 있습니까?


Arlaharen이 말한 것은 기본적으로 옳았지만 링커 오류를 설명하는 부분을 제외했습니다. 우선 CRT 없이 런타임 라이브러리로 애플리케이션을 빌드해야합니다 . 응용 프로그램 배포를 실제로 단순화하므로 항상이 작업을 수행해야합니다. 이렇게하지 않으면 모든 사용자에게 Visual C ++ 런타임 라이브러리가 설치되어 있어야하며, 시스템에 미스터리 한 DLL이 없다고 불평하지 않는 사람은 링크하는 데 추가로 수백 킬로바이트가 필요합니다. CRT를 정적으로 사용하면 나중에 지원에서 많은 골칫거리를 줄일 수 있습니다 (이것에 대해 저를 믿으세요. 어려운 방법으로 배웠습니다!).

어쨌든이 작업을 수행하려면 대상의 속성-> C / C ++-> 코드 생성-> 런타임 라이브러리로 이동하고 릴리스 빌드의 경우 "Multi-Threaded"로 설정하고 "Multi-Threaded Debug"로 설정해야합니다. 디버그 빌드.

gtest 라이브러리를 동일한 방식으로 내장되어 있기 때문에, 당신은 당신이 올바른 버전에 연결되어 있는지 확인해야 할 것이 , 그렇지 않으면 당신은 BTW (본 오류는 런타임 라이브러리의 다른 사본에 끌어 링커,이 MFC를 사용하는지 여부에 차이가 없어야합니다.) gtest를 디버그 및 릴리스 모드 로 빌드 하고 두 사본을 모두 유지해야합니다. 그런 다음 릴리스 빌드의 gtest.lib / gtest_main.lib와 디버그 빌드의 gtestd.lib / gtest_maind.lib에 대해 링크합니다.

또한 응용 프로그램이 gtest 헤더 파일이 저장된 디렉토리 (속성-> C / C ++-> 일반-> 추가 포함 디렉토리)를 가리키는 지 확인해야하지만 링커 오류가 발생하면 가정합니다. 이 부분을 이미 수정했거나 그렇지 않으면 먼저 처리해야 할 컴파일러 오류가 훨씬 더 많을 것입니다.


(이 지침은 디버그 구성에 대해 작동하는 테스트 프레임 워크를 가져옵니다. 릴리스 구성에 동일한 프로세스를 적용하는 것은 매우 간단합니다.)

Google C ++ 테스트 프레임 워크 받기

  1. 최신 gtest 프레임 워크 다운로드
  2. 압축 해제 C:\gtest

프레임 워크 라이브러리 빌드

  1. C:\gtest\msvc\gtest.slnVisual Studio에서 열기
  2. 구성을 "디버그"로 설정합니다.
  3. 솔루션 구축

테스트 프로젝트 생성 및 구성

  1. 새 솔루션을 만들고 Visual C ++> Win32> Win32 콘솔 응용 프로그램 템플릿을 선택합니다.
  2. 새로 생성 된 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택합니다.
  3. 구성을 디버그로 변경하십시오.
  4. 구성 속성> C / C ++> 일반> 추가 포함 디렉터리 : 추가 C:\gtest\include
  5. 구성 속성> C / C ++> 코드 생성> 런타임 라이브러리 : 코드가 런타임 DLL에 연결되는 경우 다중 스레드 디버그 DLL (/ MDd)을 선택합니다. 그렇지 않은 경우 다중 스레드 디버그 (/ MTd)를 선택합니다.
  6. 구성 속성> 링커> 일반> 추가 라이브러리 디렉터리 : gtestd.lib의 위치에 따라 C:\gtest\msvc\gtest\Debug또는 추가C:\gtest\msvc\gtest-md\Debug
  7. 구성 속성> 링커> 입력> 추가 종속성 : 추가 gtestd.lib

모든 것이 작동하는지 확인

  1. main()함수가 포함 된 테스트 프로젝트에서 cpp를 엽니 다 .
  2. 다음 코드를 붙여 넣으십시오.

    #include "stdafx.h"  
    #include <iostream>
    
    #include "gtest/gtest.h"
    
    TEST(sample_test_case, sample_test)
    {
        EXPECT_EQ(1, 1);
    }
    
    int main(int argc, char** argv) 
    { 
        testing::InitGoogleTest(&argc, argv); 
        RUN_ALL_TESTS(); 
        std::getchar(); // keep console window open until Return keystroke
    }
    
  3. 디버그> 디버깅 시작

모든 것이 작동하면 콘솔 창이 나타나고 단위 테스트 결과가 표시됩니다.


설정에 대한 비디오 자습서를했습니다. http://www.youtube.com/watch?v=mzSzwQOmMRs


테스트를 위해 자신의 main ()을 작성하지 않으려면 gtest_main.lib에 정의 된 main () 함수를 사용할 수 있지만 VS2012에서 "Entry point must be defined"라는 링커 오류가 발생합니다. 테스트 프로젝트에서 ProjectProperties-> Linker-> System-> SubSystem을 "Console"로 설정하면 VS2012가 "main ()"이라는 진입 점을 찾도록하고 gtest_main.lib에서 찾을 수 있습니다 (연결된 경우 제대로).


gtest를 구축 한 후 이것이 내가 한 일입니다.

  1. Common Properties-> Linker-> General-> Additional Library Directories에 \ mypath \ gtest-1.0.1 \ Debug (또는 Release)를 추가합니다.
  2. Add gtest.lib and gtest_main.lib to Common Properties->Linker->Input->Additional Dependencies

After that I just write my tests using TEST or TEST_F as appropriate and compile them together with my main function:

int main(int argc, char** argv)
{
    testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}

In Microsoft Visual Studio, misconfigured runtime library type causes link errors.

VS 2005(and 2008) uses Multithreaded DLL or Multithreaded Debug DLL as default. But Google Test library uses Mulithreaded or Mulithreaded debug runtime as default.

So, choose appropriate run time library type for google test library. (in Configuration properties -> Code Generation -> Runtime Library).


Many errors, took a while to fix.

Here are simple steps:

# Download Googletest ZIP file from: https://github.com/google/googletest

# Googletest visual studio solution

Open    C:\googletest\googletest\msvc\2010\gtest.sln
    Change "Solution configuration"
        from "Debug" to "Release"
    Build Solution
        creates gtest.lib

# Your project:

Project Properties > Configuration Properties > VC++ Directories > Include Directories
    append the following:       ;C:\googletest\googletest\include

Project Properties > Configuration Properties > Linker > General > Additional Library Directories > 
    append the following:           ;C:\googletest\googletest\msvc\2010\gtest\Win32-Release

Project Properties > Configuration Properties > C/C++ > Runtime Library
    Remove the value of the above. (or match it to Googletest project)

참고URL : https://stackoverflow.com/questions/531941/how-to-set-up-google-c-testing-framework-gtest-with-visual-studio-2005

반응형