Seize the day

POST : SDP for win32/유닛테스트

gtest


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










top

posted at

2013. 9. 11. 23:33


CONTENTS

Seize the day
BLOG main image
김대정의 앱 개발 노트와 사는 이야기
RSS 2.0Tattertools
공지
아카이브
최근 글 최근 댓글
카테고리 태그 구름사이트 링크