单元测试模板化c ++方法/类/函数的好方法是什么?

jpi*_*ihl 14 c++ templates unit-testing

我正在寻找一种在c ++中对模板化方法,类和函数进行单元测试的好方法.我觉得仅使用单一类型进行测试是不够的,只是复制单元测试并替换类型感觉不对.

更具体地说,我正在研究Matrix类并使用Boost的单元测试框架.Matrix适用于不同类型.它主要用于基本类型,但我也希望它支持具体类型.

注意,我这样做是出于学习目的,这就是为什么我没有使用现有的矩阵实现.

han*_*aad 12

Boost测试有一个宏BOOST_AUTO_TEST_CASE_TEMPLATE,它对boost :: mpl :: list中每种类型的模板运行测试.

template<typename T>
T Add(T lh, T rh)
{
   return lh + rh;
}

typedef boost::mpl::list<int, float> test_types;

BOOST_AUTO_TEST_CASE_TEMPLATE(Add_1Plus2_Is3, T, test_types)
{
    T result = Add(T(1), T(2));
    BOOST_CHECK_EQUAL(T(3), result);
}
Run Code Online (Sandbox Code Playgroud)

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