Boost Test
Boostパッケージに含まれるユニットテストフレームの使いかたをメモします.
BoostTestの雛型
- boostバージョン v1.33
- boostバージョン v1.40
- test.cpp
#include <boost/test/unit_test.hpp>
using namespace boost::unit_test_framework;
// 検証対象
int func( int x )
{
//int sign = (x<0) ? -1 : 1;
return x*x;
}
// テストケース
void FuncTest_plus_test()
{
BOOST_CHECK_EQUAL( func(1), 1 );
BOOST_CHECK_EQUAL( func(2), 4 );
BOOST_CHECK_EQUAL( func(3), 9 );
}
test_suite* init_unit_test_suite( int argc, char* argv[] )
{
test_suite* test = BOOST_TEST_SUITE( "Counter test" );
test->add( BOOST_TEST_CASE( &FuncTest_plus_test ) );
return test;
}
- コンパイル
% g++ -o run.x test.cpp -lboost_unit_test_framework
- 実行
% ./run.x Running 1 test case... *** No errors detected
テストの自動登録
- Boostバージョン v1.40
#define BOOST_TEST_MAIN
#include <boost/test/auto_unit_test.hpp>
//using namespace boost::unit_test_framework;
BOOST_AUTO_TEST_CASE( test01 )
{
// テストケース1を記述
}
BOOST_AUTO_TEST_CASE( test02 )
{
// テストケース2を記述
}
- Boostバージョン 1.33
#define BOOST_AUTO_TEST_MAIN
#include <boost/test/auto_unit_test.hpp>
using namespace boost::unit_test_framework;
BOOST_AUTO_TEST_CASE( test01 )
{
// テストケース1を記述
}
BOOST_AUTO_TEST_CASE( test02 )
{
// テストケース2を記述
}
- 共通ヘッダ
#include <boost/version.hpp>
#if BOOST_LIB_VERSION < 103600
#define BOOST_AUTO_TEST_MAIN
#include <boost/test/auto_unit_test.hpp>
//using namespace boost::unit_test_framework;
#else
#define BOOST_TEST_MAIN
#include <boost/test/auto_unit_test.hpp>
//using namespace boost::unit_test_framework;
#endif
#define TEST( _TEST_CASE_NAME_, _TEST_NAME_ ) \
BOOST_AUTO_TEST_CASE( _TEST_CASE_NAME_ ## _TEST_NAME_ )