Chinaunix首页 | 论坛 | 博客
  • 博客访问: 168045
  • 博文数量: 40
  • 博客积分: 888
  • 博客等级: 准尉
  • 技术积分: 396
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-01 10:17
文章分类
文章存档

2013年(10)

2012年(10)

2011年(11)

2010年(9)

分类: C/C++

2011-04-13 21:55:02

 

            gtest的参数化如何使用

 

一,Gtest的参数化如何使用:

 http://www.cnblogs.com/coderzh/archive/2009/04/08/1431297.html,这个网址对这个介绍的很详细

 

 先看个例子:

IEST(IsPrime,return)
    EXPECT_TRUE(IsPrime(3));
    EXPECT_TRUE(IsPrime(5));
    EXPECT_TRUE(IsPrime(11));
    EXPECT_TRUE(IsPrime(23));
    EXPECT_TRUE(IsPrime(17));
} 
 

在这个测试案例中,我至少复制粘贴了4次,假如参数有50个100个,怎么办?同时,上面的写法产生的是1个测试案例,里面有5个检查点,假如我要把5个检查变成5个单独的案例,将会更加累人

 

你是不是想用一种简单的方法,不想去做哪些重复工作,gtest用一个参数化的思想解决了这个问题.

 
使用gtest参数化的3个步骤:
 

  1:你必须添加一个类,继承testing::TestWithParam,其中T就是你需要参数化的参数类型,比如上面的例子,我需要参数化一个int型的参数,可以这样做:

    

   class   m_ParamTest : public::testing::TestWithParam< int>

     

   { }; 

 

  2:告诉gtest你的参数范围:

 

   可应用INSTANTIATE_TEST_CASE_P来告诉gtest,我的参数有哪些,例如:

    INSTANTIATE_TEST_CASE_P(acct,//这个参数是测试案例的前缀可以随便取

                            m_ParamTest,//这个要和你前面定义参数的类名要相同,如m_ParamTest

                            testing::Values(3, 5, 11, 23, 17)//这个是参数生成器,google定义了很多参数生成器,testing::Values这是其中的一种

                          );

  3:告诉gtest你那道这些参数后,具体怎样测试

   TEST_P(m_ParamTest ,//这个要和你参数定义的类名相同

           IsPrime//这个可以随便取

            )

    {

       int  n = GetParam();

      EXPECT_TRUE(IsPrime(n));

    } 

 

  这样的三个操作就等价于上面的 那个例子,当你测试用例增加时,不需要在复制

 

 

黏贴,只需要在你的参数范围里面加上就ok了。

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

上一篇:网站负载的均衡

下一篇:安装mysql

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