我实际上使用googletest框架。我有一个值参数化测试有没有办法用googletest创建自定义参数生成器?
std::tuple<int, double>
这个int代表正多边形中的顶点数,双代表它的半径。我可以代表这个使用这样的结构:
struct RegularPolygon{
int NbVertices;
double Radius;
}
的问题是,我用结合PARAMATERS发电机实际创建测试:
INSTANTIATE_TEST_CASE_P(RegularPolygon, PolygonTestCase, testing::Combine(
testing::Range(3, 10),
testing::Range(1.0, 10.0)));
所以,如果我想切换到使用
的RegularPolygon
结构作为我的参数,我必须硬编码两个范围的笛卡尔乘积。
除非有一种方法来定义我自己的RegularPolygon生成器,它只会将int映射到RegularPolygon :: NbVertices,并将double映射到RegularPolygon :: Radius。
有没有办法做到这一点?
如果没有,将元组转换为RegularPolygon实例的最佳做法是什么?
这是一个很好的s解决方案,但不完全是问题中陈述的内容,因为它不提供多边形属性的笛卡尔乘积的测试 – Kongol
@Kongol由于我不知道笛卡尔乘积,所以我只给你一个**原型** 。你必须以你自己的方式实现'operator <'和'operator +'(符合Cartesian产品)。 –