Google C++ Testing Framework
[옛날 블로그 글입니다.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로 즐거운 테스팅 되세요~ ^^

오.. 굿 정보. (하지만 씨++을 요샌 패치할때 말고는 잘 안쓴다는게..)
문기은
15 Dec 08 at 12:58 pm
앗, 댓글이 너무 늦었네요 ^^;; 죄송
넹, 저도 회사에서 C++로 코딩할 일이 많이 줄었네요 ^^
muscly
26 Dec 08 at 12:56 am