2016-08-07 3 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 ... 
    ... 
} 
関連する問題