Boost.Test
Boost 単体テストフレームワーク (Boost.Test)(英語) は、 Boost(英語) ライブラリの一部です。 これは、幅広いアサーションマクロ、XML 出力、その他の機能を備えた、完全に機能的でスケーラブルなフレームワークです。 Boost.Test 自体にはモック機能がありませんが、 gmock(英語) などのスタンドアロンのモックフレームワークと組み合わせることができます。
Boost.Test の基本
Boost.Test に詳しくない場合は、その主な概念の説明を以下に示します。
チェッカーズ
ほとんどの Boost.Test チェッカーでは、重大度を設定できます。
チェックが失敗した場合、 WARN は警告メッセージを生成しますが、エラーカウンタは増加せず、テストケースは続行されます。
チェックが失敗した場合、 CHECK はエラーを報告してエラーカウンタを増やしますが、テストケースは続行されます。
REQUIRE は、テストケースの実行を中止する必要がある場合に致命的なエラーを報告するために使用されます(たとえば、後で使用するオブジェクトが正常に作成されたかどうかを確認するため)。
この方法で、Boost チェッカーは通常、 BOOST_[level]_[checkname] フォーマットのマクロで、引数を 1 つまたは複数取ります。 基本的なマクロは BOOST_WARN、 BOOST_CHECK 、および BOOST_REQUIRE です。 チェックする式に対して引数を一つ取ります。例えば:
他のチェッカーの例をいくつか以下に示します。
一般比較 |
失敗した場合、これらのマクロは テストに失敗したというメッセージを表示するだけでなく、期待値と実際の値も表示します。
int i = 2;
int j = 1;
BOOST_CHECK( i == j ); // reports the fact of failure only: "check i == j failed"
BOOST_CHECK_EQUAL( i, j ); // reports "check i == j failed [2 != 1]"
|
浮動小数点比較 |
|
例外チェック |
|
スイート
BOOST_AUTO_TEST_SUITE(suite_name) マクロと BOOST_AUTO_TEST_SUITE_END() マクロのペアを使用して、Boost テストを スイート(英語)に編成できます。 単純なテストスイートは次のようになります。
フィクスチャ
Boost を使用してフィクスチャを作成するには、フィクスチャクラス宣言の後に作成された 通常の BOOST_AUTO_TEST_CASE マクロ(英語)または特別な BOOST_FIXTURE_TEST_CASE マクロのいずれかを使用できます。
Boost.Test をプロジェクトに追加する
フレームワークには、ヘッダーのみ、静的ライブラリ、共有ライブラリの 3 つの 使用方法から(英語)選択できます。 最適なオプションを選択するときは、ヘッダーのみとして使用される Boost.Test がかなりのコンパイル時間を必要とする可能性があることに注意してください。
さらに、 共有ライブラリバリアント(英語)に焦点を当てます。
次の 手順(英語)に従って、Boost Testing フレームワークをインストールしてビルドします。
CLion は Boost.Test バージョン 1.55 以降をサポートしています。
プロジェクトルートに Boost テスト用のフォルダーを作成します。 例: Boost_tests と呼びましょう。
CMakeLists.txt ファイルを Boost_tests フォルダー内に作成します。プロジェクトツリーで右クリックして を選択してください。
次の行をカスタマイズして、スクリプトに追加します。
set (Boost_USE_STATIC_LIBS OFF) find_package (Boost REQUIRED COMPONENTS unit_test_framework) include_directories (${Boost_INCLUDE_DIRS}) # 'Boost_Tests_run' is the target name # 'test1.cpp test2.cpp' are source files with tests add_executable (Boost_Tests_run test1.cpp test2.cpp) target_link_libraries (Boost_Tests_run ${Boost_LIBRARIES})boost_with_libs の ライブテンプレートを使用し、テンプレートコードを調整して上記のスニペットを模倣することもできます。
ルート CMakeLists.txt スクリプトで、
add_subdirectory(Boost_tests)コマンドを最後に追加し、プロジェクトを再ロードします。テストを含むソースファイルに、次の行を追加します。
#define BOOST_TEST_DYN_LINK #define BOOST_TEST_MAIN // in only one cpp file #include <boost/test/unit_test.hpp>
Boost.Test のライブテンプレート
Boost.Test で CMake スクリプトを編集する時間を節約するのに役立つ 2 つの定義済みの ライブテンプレートがあります: boost と boost_with_libs です。 それらの説明と設定は にあります。
テンプレートを挿入するには、 Ctrl+J を押すか、 CMakeLists.txt の状態で を呼び出します。 リストからオプションを選択します。例えば:

または、略語の入力を開始し、 Tab を押してスタブコードを挿入することもできます。
Boost.Test の実行 / デバッグ構成
Boost.Test はテストプログラムに main() エントリを提供し、通常のアプリケーションとして実行できますが、専用の Boost.Test 実行 / デバッグ構成を使用することをお勧めします。 これにはテスト関連の設定が含まれており、テストを通常のプログラムとして実行する場合は使用できない組み込みの テストランナーの利点を活用できます。
Boost.Test 構成を作成するには、メインメニューの 実行 | 実行構成の編集 に移動し、
をクリックして、テンプレートのリストから Boost.Test を選択します。
構成に含めるテストまたはスイートを指定するか、テスト名をフィルタリングするためのパターンを提供します。 フィールドに自動補完機能が用意されているため、すぐに記入できます。

ワイルドカードを設定してテストパターンを指定します。例えば:

構成設定の他のフィールドでは、環境変数とコマンドライン引数を設定できます。
Boost.Test バージョン 1.62 以前では、 テストフレームワークが予期せず終了しました メッセージを受け取った場合、 プログラム引数 に次の文字列を設定します。
--log_format=HRF --log_level=all構成を保存すると、 実行
または デバッグ
の準備ができました。
テストの実行
CLion では、テスト実行/デバッグセッションを開始する方法が いくつかあります。そのひとつが、特別なガターアイコンを使う方法です。 これらのアイコンは、単一テストまたはスイート/フィクスチャ全体をすばやく実行またはデバッグするのに役立ちます:

ガターアイコンは、テスト結果(すでに入手可能な場合)も表示します:成功 または失敗
。
ガターアイコンを使用してテスト/スイート/フィクスチャを実行すると、CLion は 一時的な Boost.Test 構成を作成しますが、構成のリストではグレー表示されます。 一時的な設定を保存するには、 ダイアログでそれを選択して を押します。

結果を探る
テストを実行すると、CLion は組み込みの テストランナーウィンドウに結果とプロセスを表示します。 テストツリーには、実行中のすべてのテストが 1 つずつ表示されます。 テストランナーウィンドウには次のものが含まれます。
これまでに実行されたテストの割合を示す プログレスバー、
実行中のすべてのテストとそのステータスおよび期間の ツリービュー、
テストの 出力ストリーム
ツールバーには、失敗した
テストを再実行する、
をエクスポートする、
で自動的に保存された以前の結果を開く、特定のテストを簡単に見つけるために
のアルファベット順に並べ替える、または
の期間で並べ替えて、どのテストが他のものより長く実行されたかを理解するためのオプションがあります。
