分类: C/C++
2011-04-13 21:55:02
gtest的参数化如何使用
一,Gtest的参数化如何使用:
http://www.cnblogs.com/coderzh/archive/2009/04/08/1431297.html,这个网址对这个介绍的很详细
先看个例子:
在这个测试案例中,我至少复制粘贴了4次,假如参数有50个,100个,怎么办?同时,上面的写法产生的是1个测试案例,里面有5个检查点,假如我要把5个检查变成5个单独的案例,将会更加累人。
你是不是想用一种简单的方法,不想去做哪些重复工作,gtest用一个参数化的思想解决了这个问题.
1:你必须添加一个类,继承testing::TestWithParam
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了。