一、写测试用例的三步法
我们先看看下面这个图:
- Arrange--主要是一些初始化或者提供给测试用例的一些原始数据
- Act--主要是一些执行语句,算法之类的,得出一个结果
- Assert--主要是验证输出是否正确
二、测试用例的三个特性
- Run extremely fast(within milliseconds)
- Must be able to run independently
- Doesn't depend upon any external input
三、编写测试用例
TEST(TestName, Subtest_1) {
//Arrange
int value = 100;
int increment = 5;
//Act
value = value + increment;
//Assert
ASSERT_EQ(value, 105);
}
如上述代码,是按照编写测试用例三步法去实现的。这也是测试用例的整体框架。
举个例子验证:
输出结果:
四、字符串验证函数
字符串验证函数在《GoogleTest学习笔记(一)》中有提到,下面举例使用ASSERT_STREQ(..)函数。
class Myclass {
string id;
public:
Myclass(string _id):id(_id){} //constructor function
string GetId() {return id;}
};
TEST(TestName, Subtest_1) {
//Arrange
Myclass mc("king");
//Act
string value = mc.GetId();
//Assert
ASSERT_STREQ(value.c_str(), "king"); //此处不能使用ASSERT_EQ去判断字符串, value.c_str()是把string 对象转换成c中的字符串样式;如果把ASSERT_STREQ换成EXPECT_STREQ(..)得出的结果和下面一样
}
测试结果如下:
如果给个错误的字符串,如果把"king"改成"king1108", 应该测试failed.