Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ GTest-在不同参数上运行多个测试用例_C++_Googletest - Fatal编程技术网

C++ GTest-在不同参数上运行多个测试用例

C++ GTest-在不同参数上运行多个测试用例,c++,googletest,C++,Googletest,注意:我知道这个问题是以不同的方式提出的,但基于我的限制,我无法解决它: 我使用的是谷歌测试版1.7 在VisualStudio2010中编译,使用平台工具集V100 我正在为我创建的库编写google测试 在我的库中,我有3个结构,如下所示: struct utc_clock{ .... } struct system_clock {....} struct cpu_clock {....} TEST(MyTest, testImportantThings) { time_point

注意:我知道这个问题是以不同的方式提出的,但基于我的限制,我无法解决它:

我使用的是谷歌测试版1.7 在VisualStudio2010中编译,使用平台工具集V100 我正在为我创建的库编写google测试

在我的库中,我有3个结构,如下所示:

struct utc_clock{ .... }
struct system_clock {....}
struct cpu_clock {....}
TEST(MyTest, testImportantThings)
{
    time_point<utc_clock> tp = utc_clock::now();

    ASSERT_EQ(..things with tp... );
    ... more ASSERTION 
}
此外,我还有一个类将它们用作模板参数

在我的测试用例中,我执行以下操作:

struct utc_clock{ .... }
struct system_clock {....}
struct cpu_clock {....}
TEST(MyTest, testImportantThings)
{
    time_point<utc_clock> tp = utc_clock::now();

    ASSERT_EQ(..things with tp... );
    ... more ASSERTION 
}
utc时钟、系统时钟、cpu时钟各有多次

我调查过,

在那之后,我得到了以下信息:

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 

}
但我得到以下错误:

“;”前面的意外标记开启:使用MyParamType=T

testing::internal::TYpeList类模板的使用需要模板 在线辩论列表:使用MyTypes=testing::TYpes


还有更多…

您的编译器可能太旧,无法支持使用定义类型别名。如果用老式的typedef语句替换它们呢

例如,您可以替换

using MyParamType = T;
具有同等效力的:

typedef T MyParamType;

您的编译器是否太旧,无法支持使用?如果用老式的typedef语句替换这些语句呢?你是对的。如果你愿意,你可以把这个作为答案贴出来。这个问题可以结束了