Library2012. 1. 5. 18:12

CPPUNIT 이후 C++ 테스트 프레임웍 중 최고로 평가 되는 구글테스트, 구글목테스트 사용기 이다.
머 사실 선택의 폭이 그리 넓지 않다는 ...

구글 테스트는 C 타입의 함수타입 이고, 구글목 테스트는 C++ 객체 타입이라고 이해하면 이해가 빠르것 같다.

구글목은 테스트 프레임웍이 아니라 구글테스트의 확장이므로 구글테스트도 같이 필요하다.
구글목 테스트를 설치 하면 구글 테스트도 같이 설치된다.

1, 먼저 구글목 테스트 프레임웍을 다운받는다. http://code.google.com/p/googlemock/

2, 다음 Visual C++ 로 구글목 테스트를 빌드 한다. "gmock\msvc\2005\gmock"

3, 빌드를 하면 오류가 발생할 것이다. 구글목은 tr1 의 tuple 를 사용하기 때문에 boost 를 설치해 준다. http://extern.tistory.com/37

4, 설치한 boost 의 경로를 include 폴더에 추가한다. "boost_version", "boost_version\boost\tr1\tr1"

5, 신규 프로젝트를 만들어서 구글목 헤더를 폴더에 추가한다.  "mock\gtest\include", "gmock\include"

나머지는 소스로~

#include 

#if defined (_DEBUG)
	#pragma comment (lib, "2005/Debug/gmock.lib")	
#else
	#pragma comment (lib, "2005/Release/gmock.lib")	
#endif


/*start: 메소드 테스트*/

int ReturnMethod()
{
	return 1;
}

//MethodTest, True_Method 는 결과창에서 구분을 위한 설명
TEST(MethodTest, True_Method)
{
	EXPECT_EQ(ReturnMethod(),1);		
}

TEST(MethodTest, False_Method)
{
	EXPECT_EQ(ReturnMethod(),2);		
}

/*end:  메소드 테스트*/



/*start: class 테스트*/

// ::testing::Test 상속 받아야 한다.
class Test_Class : public ::testing::Test
{
public:	
	// TEST_F 통해 class를 테스트 할때 실행되는 함수
	virtual void SetUp()
	{
		test_ptr = new int;
	}
	// TEST_F 통해 class를 테스트 할때 마지막에 실행되는 함수
	virtual void TearDown()
	{
		delete test_ptr;
		test_ptr = NULL;
	}

	//SetUp(), TearDown() 는 기본 생성자 소멸자로 대체 가능하지만 그렇게 사용하지 말자
		
protected:
	int* test_ptr;
};

TEST_F(Test_Class, True_Class)
{
	ASSERT_TRUE(test_ptr != NULL);
}

TEST_F(Test_Class, False_Class)
{
	ASSERT_FALSE(test_ptr != NULL);
}

/*end: class 테스트*/



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

 

 

Posted by 상현달