gtest는 구글에서 만든 테스트 프레임웍이다. gtest 라이브러리를 src/third_party/gtest 에 추가 하였다.
thrid_party 폴더에 추가되는 소스코드 중에 템플릿 코드가 아닌 오픈소스는 lib 파일을 만들어서 src/lib/release, /src/lib/debug 폴더에 미리 생성해서 커밋해 둡니다. 프로젝트의 구성요소가 커지는 경우 소스 변경이 거의 없는 오픈 소스의 경우 lib 파일로 만들어 두는 것이 전체 빌드 시간을 줄여준다.
UnitTest 프로젝트의 main
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
UNREFERENCED_PARAMETER(argc);
UNREFERENCED_PARAMETER(argv);
UNREFERENCED_PARAMETER(envp);
// Google Test
testing::InitGoogleTest(&argc, argv);
RUN_ALL_TESTS();
return 0;
}
테스트 코드
TEST ( UpdateUtil, Test )
{
EXPECT_TRUE(UpdateUtil::IsUpdatable(L"1.1.1.1", L"1.1.1.1") == false);
EXPECT_TRUE(UpdateUtil::IsUpdatable(L"1.1.1.2", L"1.1.1.1") == false);
EXPECT_TRUE(UpdateUtil::IsUpdatable(L"1.1.2.1", L"1.1.1.1") == false);
EXPECT_TRUE(UpdateUtil::IsUpdatable(L"1.2.1.1", L"1.1.1.1") == false);
EXPECT_TRUE(UpdateUtil::IsUpdatable(L"2.1.1.1", L"1.1.1.1") == false);
EXPECT_TRUE(UpdateUtil::IsUpdatable(L"1,1,1,1", L"1,1,1,1") == false);
EXPECT_TRUE(UpdateUtil::IsUpdatable(L"1,1,1,2", L"1,1,1,1") == false);
EXPECT_TRUE(UpdateUtil::IsUpdatable(L"1,1,2,1", L"1,1,1,1") == false);
EXPECT_TRUE(UpdateUtil::IsUpdatable(L"1,2,1,1", L"1,1,1,1") == false);
EXPECT_TRUE(UpdateUtil::IsUpdatable(L"2,1,1,1", L"1,1,1,1") == false);
EXPECT_TRUE(UpdateUtil::IsUpdatable(L"1,1,1,1", L"1,1,1,2") == true);
EXPECT_TRUE(UpdateUtil::IsUpdatable(L"1,1,1,1", L"1,1,2,1") == true);
EXPECT_TRUE(UpdateUtil::IsUpdatable(L"1,1,1,1", L"1,2,1,1") == true);
EXPECT_TRUE(UpdateUtil::IsUpdatable(L"1,1,1,1", L"2,1,1,1") == true);
EXPECT_TRUE(UpdateUtil::IsUpdatable(L"1,1,1,1", L"2,1,1") == false);
EXPECT_TRUE(UpdateUtil::IsUpdatable(L"1.1,1", L"2,1,1") == false);
EXPECT_TRUE(UpdateUtil::IsUpdatable(L"1,1,1", L"2,1,1.1") == false);
EXPECT_TRUE(UpdateUtil::IsUpdatable(L"1.1.1.1", L"0,1,1.1") == false);
}
테스트는 코드는 남겨두데 실제 테스트 실행은 하고 싶지 않을 때, 개발 단계에서 빈번히 실행하는 경우
DISABLED_ 를 맨 앞에 추가하면 실행하지 않는다.
TEST ( DISABLED_WinHttpClient, Test )
{
WinHttpClient client(L"https://www.google.com/");
// Accept any certificate while performing HTTPS request.
client.SetRequireValidSslCertificates(false);
client.SendHttpRequest();
// Get the response cookies.
wstring httpResponseCookies = client.GetResponseCookies();
wstring httpResponseHeader = client.GetResponseHeader();
wstring httpResponseContent = client.GetResponseContent();
std::wcout << httpResponseContent;
client.SaveResponseToFile(L".\\google.html");
}
결과
CI서버에서 자동으로 테스트 프로그램을 돌리거나, 전체 풀 테스트를 돌리고 싶을 때 DISABLED된 테스트 까지 모두 테스트 하고 싶다면 아래 처럼 추가 파라미터를 넣어서 실행하면 된다.
UnitTest.exe --gtest_also_run_disabled_tests