断言语法
Assert:失败后终止
Expect:失败后继续
ASSERT_TRUE(condition);
ASSERT_FALSE(condition);
ASSERT_EQ(val1, val2);
ASSERT_NQ(val1, val2);
失败后打印错误信息
EXPECT_EQ(val1, val2) << "val1 and va2 differ;
架构
TEST
一个测试用例
//TestSuitName = functionName + "Test"
TEST(TestSuitName, TestName) {
...
}
Test Fixture
继承::testing::Test
让多个TEST使用同一个数据配置
class QueueTest : public ::testing:Test {
protected:
void SetUp() override; //准备test所需资源
void TearDown() override; //释放test所需资源
}
//使用TEST_F代替TEST来访问对应Test Fixture
//每个TEST_F都会生成独立的Test Fixture对象
TEST_F(QueueTest , test1) {
...
}
执行过程:
- 创建QueueTest对象qt
- 调用qt.SetUp()初始化资源
- 使用qt运行test1
- 调用qt.TearDown()销毁资源
- 析构qt
启动测试
InitGoogleTest解析命令行中的googleTest参数
利用RUN_ALL-TEST()启动所有的测试,当所有的测试均成功时,返回0,否则返回1
int main(int argc, char* argv[])
{
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
一个简单的例子
Foo.h:待测试的类
class Foo {
bool foo(int val);
}
test_data.h:存放输入输出数据
class TestData {
public:
int val = 0;
}
test_case.h:TestFixture类
class fooFT : public test::Test
{
protected:
void SetUp() {};
void TearDown() {};
Foo m_test; //待测试的类
};
test_case.cpp
#include "test_case.h"
#include "test_data.h"
TEST_F(fooFT, footest)
{
TestData testData;
int val = testData.val;
EXPECT_TRUE(m_test.fooTest(val));
}
版权声明:本文为I_ren原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。