相关的配置与参考可以看相同系列的第一篇。本篇只提供代码。
#include "gtest/gtest.h"
#include <list>
#ifndef _WIN64
#pragma comment(lib,"../lib86/gmock.lib")
#pragma comment(lib,"../lib86/gmock_main.lib")
#pragma comment(lib,"../lib86/gtest.lib")
#pragma comment(lib,"../lib86/gtest_main.lib")
#else
#pragma comment(lib,"../lib64/gmock.lib")
#pragma comment(lib,"../lib64/gmock_main.lib")
#pragma comment(lib,"../lib64/gtest.lib")
#pragma comment(lib,"../lib64/gtest_main.lib")
#endif // !_WIN64
/*
//类型参数化2
template <typename T>
class FooTest:public testing::Test
{
};
TYPED_TEST_SUITE_P(FooTest);
TYPED_TEST_P(FooTest, DoesBlah)
{
TypeParam n = 0;
}
REGISTER_TYPED_TEST_SUITE_P(FooTest,DoesBlah);
typedef ::testing::Types<char, int, unsigned int> MyTypes;
INSTANTIATE_TYPED_TEST_SUITE_P(My, FooTest, MyTypes);
//INSTANTIATE_TYPED_TEST_SUITE_P(My, FooTest, int);
*/
//类型参数化方案一
template <typename T>
class FooTest:public testing::Test
{
public:
typedef std::list<T> List;
//静态数据有问题
static T shared_;
//T shared_;
T value_;
};
//模板类的静态成员初始化,放在类外(否则编译错误)
template <typename T> T FooTest<T>::shared_ ;
typedef testing::Types<char,int, unsigned int> MyTypes;
TYPED_TEST_SUITE(FooTest, MyTypes);
TYPED_TEST(FooTest, DoesBlah) {
//引用特殊名称TypeParam来获取类型参数。
TypeParam n = this->value_;
//静态成员添加TestFixture::前缀
n += TestFixture::shared_;
//n += this->shared_;
////要引用fixture中的typedef,请添加“typename TestFixture::”前缀。“typename”是满足编译器要求的。
typename TestFixture::List val;
val.push_back(n);
}
int test_04(int argc, char **argv) {
try
{
testing::InitGoogleTest(&argc, argv);
RUN_ALL_TESTS();
}
catch (std::exception& e)
{
std::cout << e.what() << std::endl;
}
system("pause");
return 0;
}