【发布时间】:2019-04-10 14:05:52
【问题描述】:
物理模拟正在翻新,我正在尝试为要使用类型参数化测试替换的函数编写单元测试。基本设置如下所示:
using MyTypes = ::testing::Types<base1<1>, base1<2>, base2<1>, base2<2>>;
TYPED_TEST_CASE(tests, MyTypes);
TYPED_TEST(tests, testname){
auto obj = clname(TypeParam);
auto parameters = generate_values(TypeParam);
for( auto& p : parameters ){
// Test if obj.func(p) equals the saved values
}
}
由于基类和生成值的数量很大,我想将当前(假定正确)版本的输出写入文件,并将新版本的输出与这些值进行比较。函数(func)根据TypeParam而变化,所以我也需要以某种形式保存使用的基类。
但是,我不知道如何识别使用的基类:一种解决方案是保存并比较 typeid,就像保存一样
typeid(TypeParam).name()
连同结果,但有人告诉我,这是值可以在机器之间改变,因此作为使用值没有用。我试图在 MyTypes 中找到相应的条目,即为 which 保存 i
std::is_same<MyTypes[i],TypeParam>::value
是真的,但对于任何 i 来说似乎都不是这样。有没有什么好的方法可以通过类型参数化测试来做到这一点?还是我需要完全使用其他东西?
【问题讨论】:
-
也许std::is_base_of 可能有用..
标签: c++ unit-testing googletest