Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Boost.Testの使い方再確認

タグ: C++ Boost

どうにも私のBoost.Testに関する知識が古い(1.34.1のドキュメント相当?)ので更新を図る。

とりあえず基本的なことは

この辺を読めば大体解る。
あとややこしいのは「unit_test.hppをincludeする前に何をdefineするか」だが、これはおおよそ以下の様にまとめられる。

#if boost_unit_test_frameworkライブラリをリンクする
# if ライブラリを動的リンクする
#  define BOOST_TEST_DYN_LINK
# endif
#else
# define BOOST_TEST_NO_LIB
#endif

// 以上はどちらかというとソースよりコンパイラオプションで定義

#if (! テストモジュールを複数のcppに分けて実装する) || 複数のcppの中のどれか一つ

# if (! ライブラリを動的リンクする) && テストモジュールの初期化を定義する
#  if 初期化にはinit_unit_test_suiteではなくinit_unit_testを使う
#   define BOOST_TEST_ALTERNATIVE_INIT_API
#  endif
# elif マスターテストスイートに名前を付ける
#  define BOOST_TEST_MODULE 名前
# else
#  define BOOST_TEST_MAIN
# endif

# if (! boost_unit_test_frameworkライブラリをリンクする)
#  include <boost/test/included/unit_test.hpp>
# else
#  include <boost/test/unit_test.hpp>
# endif

#else
# include <boost/test/unit_test.hpp>
#endif

例えば以下のように書き始めると、わざわざboost_unit_test_frameworkライブラリをビルドしておかなくても、ヘッダをincludeするだけでユニットテストフレームワークを使うことができる。
「とりあえず使う」分には楽だが、その分コンパイルは遅い。

// 複数のcppの中のどれか一つ
#define BOOST_TEST_NO_LIB // boost/test/included/unit_test.hpp をincludeする場合は省略可
#define BOOST_TEST_MAIN
#include <boost/test/included/unit_test.hpp>
// それ以外
#define BOOST_TEST_NO_LIB
#include <boost/test/unit_test.hpp>
スポンサーサイト

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://idlysphere.blog66.fc2.com/tb.php/218-9c479af0
この記事にトラックバックする(FC2ブログユーザー)

Appendix

タグ

Blog内検索

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。