GoogleTest之test

test宏

TEST

如下示例,在名为TestSuiteName的test suite下定义一个名为TestName的test。

TEST(TestSuiteName, TestName) {
  ... statements ...
}

TestSuiteName和TestName不能包含下划线
不同的test suite下可以有相同的test名称

TEST_F

如下,在test fixture的类名为TestFixtureName下定义一个名为TestName 的test

TEST_F(TestFixtureName, TestName) {
  ... statements ...
}

同TEST,TestFixtureName和TestName名称中不能有下划线

TEST_P

TEST_P(TestFixtureName, TestName) {
  ... statements ...
}

test fixture的类名为TestFixtureName,私有的test name为TestName,不能使用下划线命名。TestFixtureName必须是value-parameterized test fixture的类名
可以通过 GetParam() 函数获取test的参数,如下

TEST_P(MyTestSuite, DoesSomething) {
  ...
  EXPECT_TRUE(DoSomething(GetParam()));
  ...
}

INSTANTIATE_TEST_SUITE_P

INSTANTIATE_TEST_SUITE_P(InstantiationName,TestSuiteName,param_generator)
INSTANTIATE_TEST_SUITE_P(InstantiationName,TestSuiteName,param_generator,name_generator)
配合TEST_P一起使用的,用来初始化TestSuiteName。
第一个参数InstantiationName 名字是唯一的,用来区分不同的实例,在输出信息中,这个参数会作为前缀添加到test suite的名字TestSuiteName之前
第三个参数param_generator是gtest在命名空间::testing 中提供的一个函数,这个函数用来生成测试参数,有以下

Parameter GeneratorBehavior
Range(begin, end [, step])Yields values {begin, begin+step, begin+step+step, …}. The values do not include end. step defaults to 1.
Values(v1, v2, …, vN)Yields values {v1, v2, …, vN}.
ValuesIn(container) or ValuesIn(begin,end)Yields values from a C-style array, an STL-style container, or an iterator range [begin, end).
Bool()Yields sequence {false, true}.
Combine(g1, g2, …, gN)Yields as std::tuple n-tuples all combinations (Cartesian product) of the values generated by the given n generators g1, g2, …, gN.
ConvertGenerator(g)Yields values generated by generator g, static_cast to T.
最后一个可选的参数只用来生成一个后缀名吗?

TYPED_TEST

TYPED_TEST(TestSuiteName, TestName) {
  ... statements ...
}

类型测试,TestSuiteName必须要在TYPED_TEST_SUITE中定义。
TypeParam关键字指模板类型参数的类型

TYPED_TEST_SUITE

TYPED_TEST_SUITE(TestFixtureName,Types) 配合TYPED_TEST一起使用,Types是一系列要测试的类型。类型别名(using or typedef)对TYPED_TEST_SUITE 宏来说是有必要的。

TYPED_TEST_P

TYPED_TEST_SUITE_P
REGISTER_TYPED_TEST_SUITE_P
INSTANTIATE_TYPED_TEST_SUITE_P

TYPED_TEST_P(TestSuiteName, TestName) {
  ... statements ...
}

FRIEND_TEST

语法:FRIEND_TEST(TestSuiteName,TestName)
在一个class内部,使用FRIEND_TEST声明一个test作为友元类,这样可以访问类的私有成员。
如果要被测试的类定义在某个namespace中,为了能够访问,fixture类和tests也必须定义在同样的namespace中(匿名namespace不行)。

namespace my_namespace {

class MyClass {
  friend class MyClassTest;
  FRIEND_TEST(MyClassTest, HasPropertyA);
  FRIEND_TEST(MyClassTest, HasPropertyB);
  ... definition of class MyClass ...
};

} 

test code如下:

namespace my_namespace {

class MyClassTest : public ::testing::Test {
  ...
};

TEST_F(MyClassTest, HasPropertyA) { ... }
TEST_F(MyClassTest, HasPropertyB) { ... }

}  // namespace my_namespace

SCOPED_TRACE

GTEST_SKIP

GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST

类和类型

::testing::AssertionResult

::testing::AssertionException

::testing::EmptyTestEventListener

::testing::Environment

protected成员:

  • virtual void Environment::SetUp()
  • virtual void Environment::TearDown()

::testing::ScopedTrace

::testing::Test

抽象类,所有的测试类都从这个类继承,不可拷贝
public成员:

  • static void Test::SetUpTestSuite()
  • static void Test::TearDownTestSuite()
  • static bool Test::HasFatalFailure()
  • static bool Test::HasNonfatalFailure()
  • static bool Test::HasFailure()
  • static bool Test::IsSkipped()
  • static void Test::RecordProperty(const std::string& key, const std::string& value)
  • static void Test::RecordProperty(const std::string& key, int value)
    protected成员:
  • virtual void Test::SetUp()
  • virtual void Test::TearDown()

::testing::TestWithParam

从Test和WithParamInterface继承的类

TestSuite

表示一个test suite,不可拷贝
public成员:

  • const char* TestSuite::name() const 获取test suite的名字
  • const char* TestSuite::type_param() const 返回类型参数名
  • bool TestSuite::should_run() const
  • int TestSuite::successful_test_count() const
  • int TestSuite::skipped_test_count() const
  • int TestSuite::failed_test_count() const
  • int TestSuite::reportable_disabled_test_count() const
  • int TestSuite::disabled_test_count() const
  • int TestSuite::reportable_test_count() const
  • int TestSuite::test_to_run_count() const
  • int TestSuite::total_test_count() const
  • bool TestSuite::Passed() const
  • bool TestSuite::Failed() const
  • TimeInMillis TestSuite::elapsed_time() const
  • TimeInMillis TestSuite::start_timestamp() const
  • const TestInfo* TestSuite::GetTestInfo(int i) const
  • const TestResult& TestSuite::ad_hoc_test_result() const

::testing::TestInfo

存储一个test的信息
public成员:

  • const char* TestInfo::test_suite_name() const
  • const char* TestInfo::name() const
  • const char* TestInfo::type_param() const
  • const char* TestInfo::value_param() const
  • const char* TestInfo::file() const
  • int TestInfo::line() const
  • bool TestInfo::is_in_another_shard() const
  • bool TestInfo::should_run() const
  • bool TestInfo::is_reportable() const
  • const TestResult* TestInfo::result() const

::testing::TestParamInfo

描述value-parameterized test的参数,包含两个字段:param和index,参数值和它的整数序号

::testing::UnitTest

这个类包含了测试程序的信息,是一个单例,只能由UnitTest::GetInstance()在第一次调用时创建,这个实例永远不会被删除;是不可拷贝的。
public成员:

  • static UnitTest* UnitTest::GetInstance()
  • const char* UnitTest::original_working_dir() const
  • const TestSuite* UnitTest::current_test_suite() const
  • const TestInfo* UnitTest::current_test_info() const
  • int UnitTest::random_seed() const
  • int UnitTest::successful_test_suite_count() const
  • int UnitTest::failed_test_suite_count() const
  • int UnitTest::total_test_suite_count() const
  • int UnitTest::test_suite_to_run_count() const
  • int UnitTest::successful_test_count() const
  • int UnitTest::skipped_test_count() const
  • int UnitTest::failed_test_count() const
  • int UnitTest::reportable_disabled_test_count() const
  • int UnitTest::disabled_test_count() const
  • int UnitTest::reportable_test_count() const
  • int UnitTest::total_test_count() const
  • int UnitTest::test_to_run_count() const
  • TimeInMillis UnitTest::start_timestamp() const
  • TimeInMillis UnitTest::elapsed_time() const
  • bool UnitTest::Passed() const
  • bool UnitTest::Failed() const
  • const TestSuite* UnitTest::GetTestSuite(int i) const
  • const TestResult& UnitTest::ad_hoc_test_result() const
  • TestEventListeners& UnitTest::listeners()

::testing::TestEventListener

追踪测试的执行

::testing::TestEventListeners

可以让用户添加监听者用来追踪事件

::testing::TestPartResult

::testing::TestProperty

::testing::TestResult

::testing::TimeInMillis

::testing::Types<T…>

::testing::WithParamInterface

函数

InitGoogleTest

函数原型:

void ::testing::InitGoogleTest(int* argc, char** argv)
void ::testing::InitGoogleTest(int* argc, wchar_t** argv)
void ::testing::InitGoogleTest()

AddGlobalTestEnvironment

函数原型:Environment* ::testing::AddGlobalTestEnvironment(Environment* env)

RegisterTest

函数原型:template <typename Factory> TestInfo* ::testing::RegisterTest(const char* test_suite_name, const char* test_name, const char* type_param, const char* value_param, const char* file, int line, Factory factory)

RUN_ALL_TESTS

函数原型:int RUN_ALL_TESTS()

AssertionSuccess

函数原型:AssertionResult ::testing::AssertionSuccess()

AssertionFailure

函数原型:AssertionResult ::testing::AssertionFailure()

StaticAssertTypeEq

函数原型:::testing::StaticAssertTypeEq<T1, T2>()

PrintToString

函数原型:std::string ::testing::PrintToString(x)

PrintToStringParamName

函数原型:std::string ::testing::PrintToStringParamName(TestParamInfo<T>& info)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值