Altruistic Programmer's Blog (KR)

이타주의 프로그래머의 블로그

Google C++ Testing Framework

with 2 comments

[옛날 블로그 글입니다.2008.12.15]

올해 중순에 Google에서 C++용 테스트 프레임웍을 발표했었네요. 충분히 써보지는 못했지만, 매뉴얼 읽어보고 예제를 만들어본 소감으로는 C++용 테스트 프레임웍 중에서는 최고일 것 같습니다.

전통적인 CppUnit에 비해서 사용법이 상당이 간단합니다. 스크립트 언어를 통해서 테스트 작성을 쉽게 해주는  CxxTest에 비해서도 불편함이 없습니다. 오히려 CxxTest는 개발환경 설정하려면 make파일도 손대야해서 윈도우즈 개발자에게는 대략 난감했었구요.

다음 포스팅에서 설명드리려는 Google C++ Mocking Framework까지 함께 사용하면 C++ 개발자도 프레임웍 때문에 유닛테스트 만들기 힘들다는 말은 못하겠네요 -_-;;

Visual C++에서 gtest 사용하기

Google 문서가 워낙 잘 되어 있어서, 설명할 것은 많이 없고요. 귀찮으신 분들을 위해서 간단한 설정과 예제 소스 보여드리려고 합니다.

gtest 준비하기

아래 주소에서 소스 코드를 다운로드 받으시고, 압축 풀어서 적당한 곳에 둡니다.

http://code.google.com/p/googletest/downloads/list

그 안에 보시면 msvc 디렉토리가 있고, 그 안에 gtest.sln 파일을 Visual Studio에서 열어서 빌드하세요. ( 참고로 VC 7.1용 솔루션 파일입니다. )  빌드가 끝나면 msvc/Debug, msvc/Release 디렉토리에 결과물이 생깁니다.

일단 준비는 여기까지 끝!

테스트 프로젝트 준비하기

Visual Studio에서 콘솔 어플리케이션 하나 만드시고, gtest에 대한 디렉토리 설정을 합니다.

  • gtest 소스 코드 안에 include 디렉토리를 추가하셔야 되고
  • gtest 소스 코드 안에 msvc/Debug/gtestd.lib, msvc/Release/gtest.lib를 라이브러리로 추가하시면 끝.

기본적인 골격코드는 아래와 같습니다.

#include <gtest/gtest.h>

int _tmain(int argc, _TCHAR* argv[])
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}

여기까지만 실행해보셔도 좋습니다. 에러 나면 잘 잡으시구요 ㅎㅎ

테스트 코드 작성하기

테스트 코드를 그루핑하는 방법이나 다양한 Assert/Expect 방식에 대해서는 Google 문서를 봐주세요.

http://code.google.com/p/googletest/wiki/GoogleTestPrimer

아래는 간단한 예제와 그 결과입니다.

class StringTest : public testing::Test {
protected:
virtual void SetUp() {
s1 = “Muscly”;
s2 = “Blog”;
}

std::string s1;
std::string s2;
};

TEST_F(StringTest, Equal) {
ASSERT_EQ( s1, s2 );
}

TEST(VectorTest, Size) {
std::vector<int> v;
ASSERT_EQ(0, (int)v.size());
}

마무리

그동안 C++ 개발자는 Java나 C# 개발자에 비해서 손해를 봐왔다는 생각이 듭니다.  최신 개발 기법의 혜택을 보는 것은 Java 진영이 먼저였고, 닷넷 진영은 손쉽게 따라할 수 있었지만, C++ 진영은 언어의 한계로 쉽게 따라 할 수 없었죠. Microsoft도 닷넷에 힘쓰고 있는 상황에 Google이 C++ 개발자를 신경써주니 눈물이 납니다. ^^;;

C++ 개발을 하는 회사라면 표준 프레임웍으로서 권장하고 싶습니다. gtest로 즐거운 테스팅 되세요~ ^^

Written by muscly

December 15th, 2008 at 8:25 am

Posted in 프로그래밍

Tagged with , , ,

2 Responses to 'Google C++ Testing Framework'

Subscribe to comments with RSS or TrackBack to 'Google C++ Testing Framework'.

  1. 오.. 굿 정보. (하지만 씨++을 요샌 패치할때 말고는 잘 안쓴다는게..)

    문기은

    15 Dec 08 at 12:58 pm

  2. 앗, 댓글이 너무 늦었네요 ^^;; 죄송
    넹, 저도 회사에서 C++로 코딩할 일이 많이 줄었네요 ^^

    muscly

    26 Dec 08 at 12:56 am

Leave a Reply