I bet you dont want to know.
分类: C/C++
2015-03-31 22:15:23
目前网上已经有很多的C/C++测试框架,比如Gtest、CPPUnit等,功能都很类似,用起来都比较方便,这里拿Gtest举例:
一个Gtest的用例如下,使用TEST宏是最简单的封装,TEST宏里面封装的是被测试的body,EXPECT_EQ就是校验宏,如果不满足条件则用例执行失败:
int Add(int a, int b) { return a+b; }
TEST(NormalTest, Given_1_and_1_Should_Ret_2) { EXPECT_EQ(2, Add(1,1)); } |
另外一种用例方式是使用TEST_F宏,这种方式下,用户需要自己去继承testing::Test实现自己的测试suite,当然这样也提供了更大的灵活性,用户可以实现自己的SetUp和TearDown函数,用于用例执行前的初始化和执行后的清理。
class CMyTestSuite : public testing::Test { virtual void SetUp() { cout << "Run before start." << endl; } virtual void TearDown() { cout << "Run after end." << endl; } };
TEST_F(CMyTestSuite, Given_1_and_1_Should_Ret_2) { EXPECT_EQ(2, Add(1,1)); } |
对于main函数的实现也是非常简单,只要2行代码就可以了:
GTEST_API_ int main(int argc, char **argv) { testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } |
接着我们看下运行起来的效果:
对于简单的函数级测试,Gtest完全胜任,但是如果用于消息驱动的模块,是否适用呢?
--待续--
(本文章发表于psbec的个人blog,未经本人许可,不得用于商业用途。任何个人、媒体、其他网站不得私自抄袭;网络媒体转载请注明出处,增加原文链接,如有任何问题,请留言或者发邮件给psbec@126.com)