gtest参数化测试代码示例

简介:

玩转 Google开源C++单元测试框架Google Test系列(gtest)之四 - 参数化中已经介绍过了如何使用gtest进行参数化测试。在twitter上应 @xlinker 的要求,我在这里提供一个参数化的完整例子。这个例子也是我当初了解gtest时写的,同时这个例子也在《玩转》系列中出现过。最后,我再附上整个demo工程,里面有一些其他的示例,刚开始上手的同学可以直接拿我的demo工程去试,有任何疑问都欢迎提出。以下是使用TEST_P宏进行参数化测试的示例:


复制代码
#include  " stdafx.h "
#include 
" foo.h "
#include 
< gtest / gtest.h >

class  IsPrimeParamTest :  public ::testing::TestWithParam < int >
{

};

//  不使用参数化测试,就需要像这样写五次
TEST(IsPrimeTest, HandleTrueReturn)
{
    EXPECT_TRUE(IsPrime(
3 ));
    EXPECT_TRUE(IsPrime(
5 ));
    EXPECT_TRUE(IsPrime(
11 ));
    EXPECT_TRUE(IsPrime(
23 ));
    EXPECT_TRUE(IsPrime(
17 ));
}

//  使用参数化测试,只需要:
TEST_P(IsPrimeParamTest, HandleTrueReturn)
{
    
int  n  =   GetParam();
    EXPECT_TRUE(IsPrime(n));
}

// 定义参数
INSTANTIATE_TEST_CASE_P(TrueReturn, IsPrimeParamTest, testing::Values(
3 5 11 23 17 ));


//  -----------------------
//  更复杂一点的参数结构

struct  NumberPair
{
    NumberPair(
int  _a,  int  _b)
    {
        a 
=  _a;
        b 
=  _b;
    }
    
int  a;
    
int  b;
};

class  FooParamTest :  public  ::testing::TestWithParam < NumberPair >
{

};

TEST_P(FooParamTest, HandleThreeReturn)
{
    FooCalc foo;
    NumberPair pair 
=  GetParam();
    EXPECT_EQ(
3 , foo.Calc(pair.a, pair.b));
}

INSTANTIATE_TEST_CASE_P(ThreeReturn, FooParamTest, testing::Values(NumberPair(
12 15 ), NumberPair( 18 21 )));
复制代码
 
本文转自CoderZh博客园博客,原文链接:http://www.cnblogs.com/coderzh/archive/2010/03/19/gtest_demo.html,如需转载请自行联系原作者
 
目录
打赏
0
0
0
0
19
分享
相关文章
行为检测代码(一):超详细介绍C3D架构训练+测试步骤
这篇文章详细介绍了C3D架构在行为检测领域的应用,包括训练和测试步骤,使用UCF101数据集进行演示。
149 1
行为检测代码(一):超详细介绍C3D架构训练+测试步骤
Potpie.ai:比Copilot更狠!这个AI直接接管项目代码,自动Debug+测试+开发全搞定
Potpie.ai 是一个基于 AI 技术的开源平台,能够为代码库创建定制化的工程代理,自动化代码分析、测试和开发任务。
149 19
Potpie.ai:比Copilot更狠!这个AI直接接管项目代码,自动Debug+测试+开发全搞定
提升软件质量的关键路径:高效测试策略与实践在软件开发的宇宙中,每一行代码都如同星辰般璀璨,而将这些星辰编织成星系的过程,则依赖于严谨而高效的测试策略。本文将引领读者探索软件测试的奥秘,揭示如何通过精心设计的测试方案,不仅提升软件的性能与稳定性,还能加速产品上市的步伐,最终实现质量与效率的双重飞跃。
在软件工程的浩瀚星海中,测试不仅是发现缺陷的放大镜,更是保障软件质量的坚固防线。本文旨在探讨一种高效且创新的软件测试策略框架,它融合了传统方法的精髓与现代技术的突破,旨在为软件开发团队提供一套系统化、可执行性强的测试指引。我们将从测试规划的起点出发,沿着测试设计、执行、反馈再到持续优化的轨迹,逐步展开论述。每一步都强调实用性与前瞻性相结合,确保测试活动能够紧跟软件开发的步伐,及时适应变化,有效应对各种挑战。
使用ChatGPT生成登录产品代码的测试用例和测试脚本
使用ChatGPT生成登录产品代码的测试用例和测试脚本
91 35
使用ChatGPT生成关于登录产品代码的单元测试代码
使用ChatGPT生成关于登录产品代码的单元测试代码
45 16
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
68 13
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
102 1
基于Python访问Hive的pytest测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Python、来开发Hive应用的方法,产生的代码如下
102 6
基于Python访问Hive的pytest测试代码实现
|
4月前
参数化测试
参数化测试
49 0

热门文章

最新文章

  • 1
    小鱼深度评测 | 通义灵码2.0,不仅可跨语言编码,自动生成单元测试,更炸裂的是集成DeepSeek模型且免费使用,太炸裂了。
    48822
  • 2
    3天功能开发→3小时:通义灵码2.0+DEEPSEEK实测报告,单元测试生成准确率92%的秘密
    41
  • 3
    Potpie.ai:比Copilot更狠!这个AI直接接管项目代码,自动Debug+测试+开发全搞定
    14
  • 4
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    28
  • 5
    基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
    4
  • 6
    大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
    7
  • 7
    「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
    10
  • 8
    用户说 | 通义灵码2.0,跨语言编码+自动生成单元测试+集成DeepSeek模型且免费使用
    25
  • 9
    阿里云零门槛、轻松部署您的专属 DeepSeek模型体验测试
    59
  • 10
    以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
    6
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等