살군의 보조기억 장치

Another memory device…

Google Test 사용법

leave a comment »

opencv 가 google test 를 사용해서 unit test 를 하니까 google test 에 대해서도 한번 살펴봐야겠다. 물론 내가 첨부터 하진 않을꺼고 훌륭하신 분이 이미 앞서 잘 정리를 해놓은거를 참고하겠다. 여기서 살펴볼 것은 google test 를 시작하기 위해 필요한 코드이다. 예제코드를 보면 쉽게 지금 opencv 에서 어떻게 사용하는지를 알 수 있을 것이다. 기본적인 설정은 opencv 빌드환경을 만들기 위해 cmake 할 때 자동으로 다 설정이 되어 있으니 지금 내게 필요한 것은 어떻게 사용하는가 하는 것이다.

int _tmain(int argc, _TCHAR* argv[])
{
   /*The method is initializes the Google framework and must be called before RUN_ALL_TESTS */
   ::testing::InitGoogleTest(&argc, argv);

   /*RUN_ALL_TESTS automatically detects and runs all the tests defined using the TEST macro.
   It's must be called only once in the code because multiple calls lead to conflicts and,
   therefore, are not supported.
   */
   return RUN_ALL_TESTS();
}

위에 하이라이트한 line:4 와 line:10 을 보면 어디서 많이 본 것을 알수 있다. 그렇다. CV_TEST_MAIN 매크로 안에 있는 몇줄 안되는 코드 가운데 두 줄이다. 주석을 보면, line:4 는 구글테스트 프레임웍을 사용하기전에 반드시 선언해서 초기화 해줘야 되는 것이고, line:10 은 구글테스트가 실제 테스트를 수행하라고 하는 명령이다. 나는 구글테스트를 분석하는 것이 아니므로 이놈들이 뭘 의미하는지만 확인하면 된다.

이제 덤으로, 구글테스트의 몇가지 구문을 보자. 이것도 물론 훌륭하신 분이 미리 잘 정리해 둔 것이 있어 그대로 인용하겠다.

구글테스트가 지원하는 어설션은 2가지 종류로 나뉘는데 하나는 ASSERT_* 버전이고, 하나는 EXPECT_* 버전이에요. 둘의 차이는 뭘까요? 어설트* 버전은 실패 시 해당 테스트를 바로 종료해버리고 익스펙트* 버전은 실패 하여도 테스트를 계속 진행합니다.

True / False

치명적인 어설션

어설션

검증하는 것

ASSERT_TRUE(상태)

EXPECT_TRUE(상태)

상태가 참인지

ASSERT_FALSE(상태)

EXPECT_FALSE(상태)

상태가 거짓인지

 
Comparison

치명적인 어설션

어설션

검증하는 것

ASSERT_EQ(기대, 실제)

EXPECT_EQ(기대, 실제)

기대 == 실제

ASSERT_NE(값1, 값2)

ASSERT_NE(값1, 값2)

값1 != 값2

ASSERT_LT(값1, 값2)

ASSERT_LT(값1, 값2)

값1 < 값2

ASSERT_LE(값1, 값2)

ASSERT_LE(값1, 값2)

값1 <= 값2

ASSERT_GT(값1, 값2)

ASSERT_GT(값1, 값2)

값1 > 값2

ASSERT_GE(값1, 값2)

ASSERT_GE(값1, 값2)

값1 >= 값2

 
String comparison

치명적인 어설션

어설션

검증하는 것

ASSERT_STREQ(기대, 실제)

EXPECT_STREQ(기대, 실제)

두 문자열이 같은지 판단

ASSERT_STRNE(값1, 값2)

EXPECT_STRNE(값1, 값2)

두 문자열이 다른지 판단

ASSERT_STRCASEEQ(v1, v2)

EXPECT_STRCASEEQ(v1, v2)

두 문자열이 같은지

(대소문자무시)

ASSERT_STRCASENE(v1, v2)

EXPECT_STRCASENQ(v1, v2)

두 문자열이 다른지

(대소문자 무시)

돌고 돌아왔는데, 다시 코드를 살펴보면 별 다른게 없다는걸 확인할 수 있다. 그렇다. 나는 아직도 이렇게 삽질을 하고 있다. ㅠㅠ 슬슬 뭔가 할 수 있는 단계에 들어서고 있다!

참고
Advertisements

Written by gomiski

2014/02/17 at 2:27 am

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: