2016-08-07 111 views
2

,比如我有下面的测试案例:如何在Boost测试框架中重用测试用例?

#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 ... 
    ... 
} 

... 

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

回答

0

结帐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 ... 
    ... 
} 
相关问题