GTest - 运行 不同参数的多个测试用例

GTest - run multiple testcase on different parameters

注意:我知道有人以不同的方式问过这个问题,但根据我的限制我无法解决:

  1. 我正在使用google测试版1.7
  2. 编译于 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_clocksystem_clockcpu_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 

}

但我收到以下错误:

  1. unexpected token(s) preceding ';' on: using MyParamType = T;

  2. 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;