c++ - GTest - 在不同的参数上运行多个测试用例
问题描述
注意:我知道这个问题是以不同的方式提出的,但由于我的限制,我无法解决它:
- 我正在使用谷歌测试版
1.7
- 在 Visual Studio 2010 中编译,使用平台工具集 V100
我正在为我创建的库编写谷歌测试。
在我的库中,我有 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
}
我正在尝试做的是运行
TEST(MyTest, testImportantThings)
utc_clock
每个, system_clock
,多次cpu_clock
我研究了如何获取 gtest TYPED_TEST 参数类型,
之后,我得到以下信息:
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
}
但我收到以下错误:
';' 之前的意外标记 上:
using MyParamType = T;
testing::internal::TYPEList 使用类模板需要在线模板争论列表:
using MyTypes = testing::TYpes<utc_clock, system_clock, cpu_clock>;
和更多...
解决方案
您的编译器可能太旧,无法支持使用using
. 如果你用旧式的 typedef 语句替换它们会怎样?
例如,您可以替换
using MyParamType = T;
与等价物:
typedef T MyParamType;
推荐阅读
- windows - “Win32_PerfFormattedData_PerfOS_Processor”查询无效
- ethereum - “ERC1155”——“未定义”的参数数量无效。得到 0 预期 1
- reactjs - 无法使用安全规则读取所有数据
- kotlin-coroutines - 如何在 Kotlin Coroutines 中创建 MutableSharedFlow,类似于 RxJava 的 PublishSubject?
- python - 为什么从 Google Bucket 中提取数据这么慢?
- php - 如何使用 pdo->fetchAll 和模式 PDO::FETCH_CLASS 将 GROUP_CONCAT 从字符串映射到数组
- kotlin - 使用 Kotlin Mockito 测试捕获异常
- html - 如何在 HTML 单元格中获取与图像一致的文本
- reactjs - 反应大日历多天事件
- typescript - Windows Script Host 的 TypeScript 编译问题