c++ - 使用不同的类类型重复 Boost 单元测试

标签 c++ unit-testing boost boost-test

我有两个类共享完全相同的 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中有模板测试用例

http://www.boost.org/doc/libs/1_54_0/libs/test/doc/html/utf/user-guide/test-organization/auto-test-case-template.html

所以,这样的事情可以帮助

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/

相关文章:

c++ - 获取特定进程的线程句柄/id

c++ - MFC EditControl 的值不在私有(private)成员中

c++ - 如何修复艺术ascii,我点击一个字母没问题,但输入一个阶段艺术结果错误

java - 如何模拟父类进行单元测试

c++ - 所以我给自己弄了一个线程池任务管理器系统。我应该从现在开始只使用它来创建所有线程吗?

c++ - 任何人都知道有什么计划让 ^ 成为 shared_ptr<T> 的简写吗?

javascript - 如何使用 ava 忽略非测试文件?

c# - 从 VSTest.Console.exe 向单元测试传递参数或选项

c++ - 编译时增加几何距离()错误

c++ - 在 Ubuntu x64 上链接 Boost