GTest - 运行 不同参数的多个测试用例
GTest - run multiple testcase on different parameters
注意:我知道有人以不同的方式问过这个问题,但根据我的限制我无法解决:
- 我正在使用google测试版
1.7
- 编译于 Visual studio 2010,使用平台工具集 V100
我正在为我创建的库编写 google 测试。
在我的库中,我有 3 个结构,如下所示:
struct utc_clock{ .... }
struct system_clock {....}
struct cpu_clock {....}
此外,我还有另一个 class 将它们用作 模板 参数。
在我的测试用例中,我做了如下操作:
TEST(MyTest, testImportantThings)
{
time_point<utc_clock> tp = utc_clock::now();
ASSERT_EQ(..things with tp... );
... more ASSERTION
}
我想做的是 运行
TEST(MyTest, testImportantThings)
每个 utc_clock
、system_clock
、cpu_clock
多次
我调查了 ,
之后,我得到了以下信息:
template<typename T>
struct MyTest: public testing::Test{
using MyParamType = T;
};
using MyTypes = testing::TYpes<utc_clock, system_clock, cpu_clock>;
TYPED_TEST_CASE(MyTest, MyTypes);
TYPED_TEST(MyTest, testImportantStuff)
{
using clock = typename TestFixture::MyParamType;
timepoint<clock> tp = clock::now();
ASSERT_EQ(..things with tp... );
... more ASSERTION
}
但我收到以下错误:
unexpected token(s) preceding ';' on: using MyParamType = T;
testing::internal::TYpeList use of class template requires template
arguement list online on: using MyTypes = testing::TYpes<utc_clock, system_clock, cpu_clock>;
还有更多...
您的编译器可能太旧,不支持使用 using
定义类型别名。如果用老式的 typedef 语句替换它们会怎样?
例如,您可以替换
using MyParamType = T;
相当于:
typedef T MyParamType;
注意:我知道有人以不同的方式问过这个问题,但根据我的限制我无法解决:
- 我正在使用google测试版
1.7
- 编译于 Visual studio 2010,使用平台工具集 V100
我正在为我创建的库编写 google 测试。
在我的库中,我有 3 个结构,如下所示:
struct utc_clock{ .... }
struct system_clock {....}
struct cpu_clock {....}
此外,我还有另一个 class 将它们用作 模板 参数。
在我的测试用例中,我做了如下操作:
TEST(MyTest, testImportantThings)
{
time_point<utc_clock> tp = utc_clock::now();
ASSERT_EQ(..things with tp... );
... more ASSERTION
}
我想做的是 运行
TEST(MyTest, testImportantThings)
每个 utc_clock
、system_clock
、cpu_clock
我调查了
之后,我得到了以下信息:
template<typename T>
struct MyTest: public testing::Test{
using MyParamType = T;
};
using MyTypes = testing::TYpes<utc_clock, system_clock, cpu_clock>;
TYPED_TEST_CASE(MyTest, MyTypes);
TYPED_TEST(MyTest, testImportantStuff)
{
using clock = typename TestFixture::MyParamType;
timepoint<clock> tp = clock::now();
ASSERT_EQ(..things with tp... );
... more ASSERTION
}
但我收到以下错误:
unexpected token(s) preceding ';' on:
using MyParamType = T;
testing::internal::TYpeList use of class template requires template arguement list online on:
using MyTypes = testing::TYpes<utc_clock, system_clock, cpu_clock>;
还有更多...
您的编译器可能太旧,不支持使用 using
定义类型别名。如果用老式的 typedef 语句替换它们会怎样?
例如,您可以替换
using MyParamType = T;
相当于:
typedef T MyParamType;