【问题标题】:How to reuse test case in Boost test framework?如何在 Boost 测试框架中重用测试用例?
【发布时间】:2016-08-07 09:52:06
【问题描述】:

例如我有以下测试用例:

#include <MyClass.hpp>
#define BOOST_TEST_MODULE MyTest
#include <boost/test/unit_test.hpp>

BOOST_AUTO_TEST_CASE( my_test )
{
    MyClass o1(42), o2(21);
    BOOST_CHECK( o1.is_valid() );
    BOOST_CHECK_EQUAL( o1 == o2 * 2 );
    BOOST_CHECK_EQUAL ...
    ...
}

有几个类似的类实现了相同的方法,想用相同的逻辑测试它们,测试用例可能如下:

BOOST_AUTO_TEST_CASE( my_test1 )
{
    MyClass1 o1(42), o2(21);
    BOOST_CHECK( o1.is_valid() );
    BOOST_CHECK_EQUAL( o1 == o2 * 2 );
    BOOST_CHECK_EQUAL ...
    ...
}

BOOST_AUTO_TEST_CASE( my_test2 )
{
    MyClass2 o1(42), o2(21);
    BOOST_CHECK( o1.is_valid() );
    BOOST_CHECK_EQUAL( o1 == o2 * 2 );
    BOOST_CHECK_EQUAL ...
    ...
}

BOOST_AUTO_TEST_CASE( my_test3 )
{
    MyClass3 o1(42), o2(21);
    BOOST_CHECK( o1.is_valid() );
    BOOST_CHECK_EQUAL( o1 == o2 * 2 );
    BOOST_CHECK_EQUAL ...
    ...
}

...

有没有办法在测试用例中重用逻辑?

【问题讨论】:

    标签: c++ unit-testing boost


    【解决方案1】:

    查看template test cases

    #include <MyClass.hpp>    
    #define BOOST_TEST_MODULE MyTest
    #include <boost/test/included/unit_test.hpp>
    #include <boost/mpl/list.hpp>
    
    typedef boost::mpl::list<MyClass1,MyClass2,MyClass3> test_types;
    
    BOOST_AUTO_TEST_CASE_TEMPLATE( my_test, T, test_types )
    {
        T o1(42), o2(21);
        BOOST_CHECK( o1.is_valid() );
        BOOST_CHECK_EQUAL( o1 == o2 * 2 );
        BOOST_CHECK_EQUAL ...
        ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-20
      • 2011-06-14
      • 2020-11-23
      • 2016-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-14
      相关资源
      最近更新 更多