c++ - 您可以使用 Google Test 将复杂类型传递给参数化测试吗?
问题描述
使用 Google 测试将值传递到参数化测试时:
INSTANTIATE_TEST_SUITE_P(InstantiationName,
FooTest,
testing::Values("meeny", "miny", "moe"));
无论如何在将它们传递给之前构造更多的c,例如向量testing::Values
?
解决方案
您可以将许多不同的类型传递给参数化类型,例如向量:
struct VectorTest : public testing::TestWithParam<std::vector<int>> {};
TEST_P(VectorTest, MyTestCase) {
auto expectedVector = std::vector<int>{42, 314, 271, 161};
ASSERT_EQ(expectedVector, GetParam());
}
INSTANTIATE_TEST_CASE_P(VectorInstantiationName,
VectorTest,
testing::Values(std::vector<int>{42, 314, 271, 161}));
或用户定义的类型:
struct MyParam {
int i;
std::string s;
};
struct MyTest : public testing::TestWithParam<MyParam> {};
TEST_P(MyTest, MyTestCase) {
ASSERT_EQ(42, GetParam().i);
ASSERT_EQ("foo", GetParam().s);
}
INSTANTIATE_TEST_CASE_P(InstantiationName,
MyTest,
testing::Values(MyParam{42, "foo"}));
(INSTANTIATE_TEST_CASE_P
目前使用的是 1.8;INSTANTIATE_TEST_SUITE_P
应用于较新版本的 gtest)。
推荐阅读
- css - 当我关闭 Chrome devtools 中的 CSS 规则然后再次打开时,绝对定位的元素会改变位置
- wordpress - 我的客户需要域和托管在不同的托管服务提供商
- asp.net-mvc - Syncfusion MVC Datagrid - 如何在行中显示按钮
- javascript - node.js、express.js 和 mysql - 无法读取未定义的属性“状态”
- javascript - {{}} 我在 html 脚本标签中找到了这个
- mysql - 如何在 2 个表中进行计数
- spring-cloud-dataflow - 自定义处理器流程的 Http 引发 org.springframework.expression.spel.SpelEvaluationException: EL1004E
- wso2 - 如何通过 WSO2-API 管理器传递 CKAN API 授权令牌
- android - 如何从firestore中的数组数据字段中获取数据?
- php - php替换字符串中的id元素内容