我有两个类共享完全相同的 API 和功能(它们包装不同的第 3 方 API 以提供相同的功能)。这两个类不有共同的基类/接口(interface)。
我对其中一个进行了 boost 单元测试,并想在另一个上运行完全相同的测试,但现在我只知道如何复制粘贴测试并查找/替换类名。除了在两个地方更新测试很烦人之外,这还意味着不能保证两个类的测试是相同的。
有什么方法可以“模板化”测试用例吗?如果没有,你会如何解决这个问题?到目前为止我能想到的是类似的东西(请原谅伪代码):
template<class T>
void runTests()
{
T t;
//do tests here
}
BOOST_AUTO_TEST_CASE(test_X)
{
runTests<X>();
}
BOOST_AUTO_TEST_CASE(test_Y)
{
runTests<Y>();
}
但我什至不知道这是否可行。
最佳答案
完全没问题,为什么不呢?但是,boost中有模板测试用例
所以,这样的事情可以帮助
typedef boost::mpl::vector<X, Y> XY_types;
BOOST_AUTO_TEST_CASE_TEMPLATE(test_X_or_Y, T, XY_types)
测试将被调用两次,第一次是针对 X,第二次是针对 Y。
关于c++ - 使用不同的类类型重复 Boost 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19403006/