重复与不同类类型
问题描述:
升压单元测试我有共享完全相同的API和功能(它们被包装不同第三方API来提供相同的功能)两类。这两个类不是有一个共同的基类/接口。重复与不同类类型
我对他们的一个升压单元测试,并希望在其上运行其他完全相同的测试,但现在我只知道如何复制粘贴测试和查找/替换类名。除了烦恼不得不在两个地方更新测试外,这也意味着不能保证两个测试的测试是一致的。
有没有办法,我可以“模板”一个测试用例?如果不是,你会如何解决这个问题?我到目前为止所能想到的是(类似于伪代码):
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>();
}
但我甚至不知道这是否可行。
答
这是完全OK,为什么不呢?但是,模板测试案例升压
所以,这样的事情可以帮助
typedef boost::mpl::vector<X, Y> XY_types;
BOOST_AUTO_TEST_CASE_TEMPLATE(test_X_or_Y, T, XY_types)
和测试将被调用两次,第一次X和第二为Y.
答
您应该看看Test case template,因为它们提供了使用不同数据类型运行同一组测试的方法。据我了解,使用自动注册宏,你可以提供一个测试用例模板:
BOOST_AUTO_TEST_CASE_TEMPLATE(my_test, T, test_types)
{
BOOST_CHECK(checkSomethingWithType(T));
}
其中tests_types
是类型的MPL列表:
typedef boost::mpl::list<X, Y> test_types;
这些例子中提取,并从适应Boost测试文档。