Google Test

googletest 是一个类似 JUnit 或 PyUnit,用于 C++ 开发的测试框架。

断言

gtest 提代了两种断言机制:

子例程(子函数)中使用断言:

常用的断言形式:

其它的形式:

另,可使用 RecordProperty(key, value) 记录日志信息。

测试用例

gtest 由多个测试套件(TEST SUIT)组成,每个测试套件由多个测试用例(TEST)组成。

TEST(FooTest, TestName)
{
	ASSERT_EQ(2, 2);
}
class FooTest : public ::testing::Test
{
protected:
	void SetUp() override;
	void TearDown() override;
};

TEST_F(FooTest, TestName)
{
	ASSERT_EQ(2, 2);
}
class FooTest : public ::testing::TestWithParam<int>
{
};

TEST_P(FooTest, TestName)
{
	auto value = GetParam();
}

INSTANTIATE_TEST_SUIT_P(instance_name, FooTest, ::testing::Values(1, 2, 3));
template <class T>
class FooTest : public ::testing::Test
{
};

TYPED_TEST(FooTest, TestName)
{
	using Type = TypeParam;
}
template <class T>
class FooTest : public ::testing::Test
{};

TYPED_TEST_SUIT_P(FooTest);

TYPED_TEST_P(FooTest, TestName)
{
}

REGIST_TYPED_TEST_SUIT_P(FooTest, TestName, ...);

using Types = ::testing::Types<int, double>;  // 必须用类型别名
INSTANTIATE_TYPED_TEST_SUIT_P(instance_type, FooTest, Types);

共享测试数据

class Environment : public ::testing::Environment
{
protected:
	void SetUp() override;
	void TearDown() override;
};

auto shared = ::testing::AddGlobalTestEnvironment(new Environment());
class FooTest : public ::testing::Test
{
protected:
	static void SetUpTestSuit();
	static void TearDownTestSuit();
};

其它

进行死亡测试套件命名以 DeathTest 为后缀,使用其最优先进行。