人人都能学会的编程入门课
胡光
原百度高级算法研发工程师
19410 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 38 讲
开篇词 (1讲)
人人都能学会的编程入门课
15
15
1.0x
00:00/00:00
登录|注册

28 | 尝试升级(上):完善测试框架的功能与提示

你好,我是胡光,欢迎回来。
在上一节课中呢,我们学习了测试框架的主要功能流程,完成了最重要的 RUN_ALL_TESTS 函数的功能逻辑。并且在这个学习期间,我们还使用了注册函数的技巧,就是让一些函数先于主函数执行,将测试用例函数信息记录在一个函数指针数组中,为后续的 RUN_ALL_TESTS 函数功能的执行作铺垫。
可你有没有发现,我们上节课程所完成的代码,只能让我们的测试框架在整体流程功能上跑通,然而程序的输出内容却不如 gtest 丰富。
今天,我们的主要任务,就是参考 gtest 的输出,逐步完善我们自己测试框架的相关信息输出方面的细节,从而让输出内容更加符合我们想要的信息。来,让我们一起开始吧。

温故知新,gtest 的输出结果

我们先来回顾一下 gtest 的输出结果,gtest 的输出内容大体可以分成三个部分。
第一部分,一套单元测试的相关信息:
[==========] Running 2 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 2 tests from test_is_prime
这段信息说明这套单元测试中,包含了 2 个测试用例。
第二部分,是每个单元测试运行信息的输出:
[ RUN ] test_is_prime.test1
[ OK ] test_is_prime.test1 (1 ms)
[ RUN ] test_is_prime.test2
gtest_test.cpp:25: Failure
Expected equality of these values:
is_prime(4)
Which is: 1
0
gtest_test.cpp:26: Failure
Expected equality of these values:
is_prime(0)
Which is: 1
0
gtest_test.cpp:27: Failure
Expected equality of these values:
is_prime(1)
Which is: 1
0
[ FAILED ] test_is_prime.test2 (0 ms)
如上所示,第一个单元测试 test_is_prime.test1 运行结果正确,所用时间是 1ms;第二个单元测试 test_is_prime.test2 中,有三个判等 EXPECT 断言的结果是错误的,也就是 is_prime 函数的返回值,和测试用例中期望的返回值不符,这说明 is_prime 函数存在 Bug。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了如何完善测试框架的功能与提示。作者首先回顾了gtest的输出结果,包括单元测试的相关信息、每个单元测试运行信息的输出以及单元测试的总结信息。然后,作者提出了完善测试框架输出信息的三个方面:输出测试用例的名字、输出测试用例的运行时间与结果、以及在EXPECT断言出错时输出错误提示信息。接着,作者详细介绍了如何通过修改注册函数的功能逻辑和数据结构,实现了输出测试用例名字的功能改造。通过修改注册函数的逻辑和调整RUN_ALL_TESTS中使用test_function_arr数组的逻辑代码,实现了输出测试用例名字的框架功能改造。文章内容详实,通过实际代码示例和解释,使读者能够快速了解如何完善测试框架的功能与提示。文章还介绍了如何统计函数过程的运行时间和确定测试结果是否正确的方法,并给出了相应的代码示例。最后,作者鼓励读者通过课程小结中的基本原则,即功能迭代,数据先行,来设计和开发功能,以及鼓励读者在测试框架中加入更多令人惊喜的功能。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《人人都能学会的编程入门课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(2)

  • 最新
  • 精选
  • 宋不肥
    1/(一个时钟周期的时间)应该就是主频吧,应该不会是兆级别的吧

    作者回复: 你说的是CPU的工作频率,和文中说的概念不是一个。

    2020-03-28
  • 一个 CPU 时钟周期 是不是就执行一条 CPU 指令?

    作者回复: 不是的。如果是这样的话,1秒钟,执行100万条指令,我的电脑也太慢了~~~(捂脸)

    2020-03-24
收起评论
显示
设置
留言
2
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部