1.2.C语言基础进阶——单元测试框架的开发
第二天开始就很有难度了……
测试的意义
对于测试的理解:
- 通过测试 ≠ 没有bug
- 通过测试 =概率性正确
如何编写正确的程序
- 正确的代码风格(开发)
- 严谨的逻辑思维(开发)
- 防御式编程习惯(开发)
- 合理的测试用例(调试)
Google Test的使用范例
编译Google Test
github项目网址:googletest,本范例环境为Ubuntu16.04
首先clone下来项目git clone https://github.com/google/googletest
进入项目文件夹,首先新建build目录,用来构建工程。进入build目录,执行命令cmake ../
,cmake利用CMakeLists.txt中构建规则生成Makefile文件,当前build目录下将会产生构建测试框架的内容文件,包括Makefile文件
直接执行make
命令,将会完成google测试框架的编译(构建)过程,最后作为第三方模块,嵌入到自己的工程中
原版的执行不知道为什么会出错,老师那边的clone下来是可以的(已经修复,详情见文末)
其中定义部分位于build/lib
目录下
声明部分位于googletest/googletest/include
目录下
使用GoogleTest
首先建立自己的项目目录,并建立lib目录和include目录,复制定义cp googletest/build/lib/* lib/
,复制声明cp -R googletest/googletest/include/* include/
之后新建自己的测试函数,以下为一个范例,其中有两个测试用例
#include <iostream>
#include <gtest/gtest.h>
using namespace std;
int add(int a, int b) {
return a + b;
}
//一个测试用例
TEST(test, add) {
//等于
EXPECT_EQ(add(3, 4), 7);
//等于
EXPECT_NE(add(3, 4), 8);
//大于
EXPECT_GT(add(3, 4), 7);
//小于
EXPECT_LT(add(3, 4), 8);
//大于等于
EXPECT_GE(add(3, 4), 7);
//小于等于
EXPECT_LE(add(3, 4), 7);
}
TEST(test, add2) {
EXPECT_EQ(add(3, 4), 7);
EXPECT_NE(add(3, 4), 8);
EXPECT_GT(add(3, 4), 6);
EXPECT_LT(add