Google Test入门教程

  • Post author:
  • Post category:其他




断言语法

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) {
	...
}

执行过程:

  1. 创建QueueTest对象qt
  2. 调用qt.SetUp()初始化资源
  3. 使用qt运行test1
  4. 调用qt.TearDown()销毁资源
  5. 析构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 版权协议,转载请附上原文出处链接和本声明。