Chinaunix首页 | 论坛 | 博客
  • 博客访问: 78306
  • 博文数量: 28
  • 博客积分: 1415
  • 博客等级: 上尉
  • 技术积分: 351
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-15 13:18
个人简介

I bet you dont want to know.

文章分类

全部博文(28)

分类: C/C++

2015-03-31 22:15:23

目前网上已经有很多的C/C++测试框架,比如GtestCPPUnit等,功能都很类似,用起来都比较方便,这里拿Gtest举例:

    一个Gtest的用例如下,使用TEST宏是最简单的封装,TEST宏里面封装的是被测试的bodyEXPECT_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,当然这样也提供了更大的灵活性,用户可以实现自己的SetUpTearDown函数,用于用例执行前的初始化和执行后的清理。

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)

阅读(598) | 评论(0) | 转发(0) |
0

上一篇:模块测试框架1-何为模块级测试?

下一篇:没有了

给主人留下些什么吧!~~