bambooflow Note

Test

最終更新:

bambooflow

- view
メンバー限定 登録/ログイン

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_ )
 
 
記事メニュー
ウィキ募集バナー