重复与不同类类型

问题描述:

升压单元测试我有共享完全相同的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,为什么不呢?但是,模板测试案例升压

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.

您应该看看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测试文档。