GTest源码剖析——概述
1 概述
Source: https://github.com/google/googletest
Build:
g++ -isystem ${GTEST_DIR}/include -I${GTEST_DIR} -pthread -c ${GTEST_DIR}/src/gtest-all.cc
ar -rv libgtest.a gtest-all.o
GTest有两个概念:TestCase和Test。实际上,这两个概念分别改名为TestSuite和TestCase更加妥当。
2 GTest使用
2.1 main函数
int main(int argc, char** argv)
{
InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
2.2 TEST宏的使用
TEST(Call,makeCall)
{
ASSERT_TRUE(true);
}
2.3 TEST_F宏的使用
class Call : public testing::Test
{
protected:
static void SetUpTestCase()
{
CallServer *_callServer = new CallServer;
}
static void TearDownTestCase()
{
delete _callServer;
_callServer = NULL;
}
virtual void SetUp()
{
CallInfo *_callInfo = new CallInfo;
}
virtual void TearDown()
{
delete _callInfo;
_callInfo = NULL;
}
static CallServer* _callServer;
CallInfo* _callInfo;
};
TEST_F(Call,makeCall);
2.4 TEST_P宏的使用
class CallArgs
{
public:
CallArgs(bool hasAudio,bool hasVideo):
_hasAudio(hasAudio),_hasVideo(hasVideo){}
bool audio(){ return _hasAudio;}
bool video(){ return _hasVideo;}
private:
bool _hasAudio;
bool _hasVideo;
};
class Call: public ::testing::TestWithParam<CallArgs>
{
};
INSTANTIATE_TEST_CASE_P(VOIP, Call, ::testing::Values(
CallArgs(true,true),
CallArgs(true,false)
) );
TEST_P( Call, makeCall)
{
CallArgs args = GetParam();
ASSERT_TRUE( makeCall(args.audio(),args.video()) );
}
3 参考
ZhaiPillar
2017-09-16