CLion 2024.1 ヘルプ

Boost.Test

Boost 単体テストフレームワーク (Boost.Test)(英語) は、Boost(英語) ライブラリの一部です。これは完全に機能するスケーラブルなフレームワークであり、幅広いアサーションマクロ、XML 出力、その他の機能を備えています。Boost.Test 自体にはモック機能がありませんが、gmock(英語) などのスタンドアロンのモックフレームワークと組み合わせることができます。

Boost. テストの基本

Boost.Test に詳しくない場合は、その主な概念の説明を以下に示します。

チェッカーズ

ほとんどの Boost.Test チェッカーでは、重大度を設定できます。

  • チェックが失敗した場合、WARN は警告メッセージを生成しますが、エラーカウンタは増加せず、テストケースは続行されます。

  • チェックが失敗した場合、CHECK はエラーを報告してエラーカウンタを増やしますが、テストケースは続行されます。

  • REQUIRE は、テストケースの実行を中止する必要がある場合に致命的なエラーを報告するために使用されます(たとえば、後で使用するオブジェクトが正常に作成されたかどうかを確認するため)。

このように、Boost チェッカーは通常、1 つまたは複数の引数を取る BOOST_[level]_[checkname] 形式のマクロです。基本的なマクロは BOOST_WARNBOOST_CHECKBOOST_REQUIRE です。それらはチェックする式の 1 つの引数を取ります。例:

BOOST_WARN(sizeof(int) == sizeof(long)); BOOST_CHECK( i == 1 ); BOOST_REQUIRE( j > 5 );

他のチェッカーの例をいくつか以下に示します。

一般比較

BOOST_[level]_EQUALBOOST_[level]_NEBOOST_[level]_GT

失敗した場合、これらのマクロはテストに失敗したというメッセージを表示するだけでなく、期待値と実際の値も表示します。

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_[level]_CLOSE / BOOST_[level]_CLOSE_FRACTION / BOOST_[level]_SMALL

例外チェック

BOOST_[level]_THROW / BOOST_[level]_NO_THROW / BOOST_[level]_EXCEPTION

スイート

BOOST_AUTO_TEST_SUITE(suite_name) マクロと BOOST_AUTO_TEST_SUITE_END() マクロのペアを使用して、Boost テストをスイート(英語)に編成できます。単純なテストスイートは次のようになります。

#define BOOST_TEST_MODULE Suite_example #include <boost/test/unit_test.hpp> BOOST_AUTO_TEST_SUITE(TwoTwoFour_suite) BOOST_AUTO_TEST_CASE(testPlus) { BOOST_CHECK_EQUAL(2+2, 4); } BOOST_AUTO_TEST_CASE(testMult) { BOOST_CHECK_EQUAL(2*2, 4); } BOOST_AUTO_TEST_SUITE_END()

フィクスチャ

Boost を使用してフィクスチャを作成するには、フィクスチャクラス宣言の後に作成された通常の BOOST_AUTO_TEST_CASE マクロ(英語)または特別な BOOST_FIXTURE_TEST_CASE マクロのいずれかを使用できます。

struct SampleF { SampleF() : i(1) { } ~SampleF() { } int i; }; BOOST_FIXTURE_TEST_CASE(SampleF_test, SampleF) { // accessing i from SampleF directly BOOST_CHECK_EQUAL(i, 1); BOOST_CHECK_EQUAL(i, 2); BOOST_CHECK_EQUAL(i, 3); }

Boost.Test をプロジェクトに追加する

フレームワークには、ヘッダーのみ、静的ライブラリ、共有ライブラリの 3 つの使用方法から(英語)選択できます。最適なオプションを選択するときは、ヘッダーのみとして使用される Boost.Test がかなりのコンパイル時間を必要とする可能性があることに注意してください。

さらに、共有ライブラリバリアント(英語)に焦点を当てます。

  1. 次の手順(英語)に従って、Boost Testing フレームワークをインストールしてビルドします。

    CLion は Boost.Test バージョン 1.55 以降をサポートしていることに注意してください。

  2. プロジェクトルートに Boost テスト用のフォルダーを作成します。例: Boost_tests と呼びましょう。

  3. ブーストテストフォルダー内に CMakeLists.txt ファイルを作成します。プロジェクトツリーでそれを右クリックし、新規 | CMakeLists.txt を選択します。

    次の行をカスタマイズして、スクリプトに追加します。

    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ライブテンプレートを使用し、テンプレートコードを調整して上記のスニペットを模倣することもできます。

  4. ルート CMakeLists.txt スクリプトで、add_subdirectory(Boost_tests) コマンドを最後に追加し、プロジェクトを再ロードします。

  5. テストを含むソースファイルに、次の行を追加します。

    #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 つの定義済みのライブテンプレートがあります: boostboost_with_libs です。それらの説明と設定は設定 | エディター | ライブテンプレート | CMake にあります。

テンプレートを挿入するには、Ctrl+J を押すか、CMakeLists.txtコード | ライブテンプレートの挿入を呼び出します。オプションのリストから選択します。例:

Boost live template

または、略語の入力を開始し、Tab を押してスタブコードを挿入することもできます。

Boost。テスト実行 / デバッグ構成

Boost.Test はテストプログラムに main() エントリを提供し、通常のアプリケーションとして実行できますが、専用の Boost.Test 実行 / デバッグ構成を使用することをお勧めします。これにはテスト関連の設定が含まれており、テストを通常のプログラムとして実行する場合は使用できない組み込みのテストランナーの利点を活用できます。

  1. Boost.Test 構成を作成するには、メインメニューの実行 | 実行構成の編集に移動し、 をクリックして、テンプレートのリストから Boost.Test を選択します。

  2. 構成に含めるテストまたはスイートを指定するか、テスト名をフィルタリングするためのパターンを提供します。フィールドで自動補完を使用すると、すばやく入力できます。

    completion in configuration fields

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

    pattern for tests
  3. 構成設定の他のフィールドでは、環境変数とコマンドライン引数を設定できます。

    Boost.Test バージョン 1.62 以前では、テストフレームワークが予期せず終了しましたメッセージを受け取った場合、プログラム引数に次の文字列を設定します。

    --log_format=HRF --log_level=all
  4. 構成を保存すると、実行 またはデバッグ の準備ができました。

テストを実行

CLion には、テスト用の実行 / デバッグセッションを開始する方法がいくつかあります。そのうちの 1 つは特別なガターアイコンを使用する方法です。これらのアイコンは、単一のテストまたはスイート / フィクスチャ全体をすばやく実行またはデバッグできます。

gutter icons for tests

ガターアイコンにはテスト結果(すでに使用可能な場合)も表示されます。成功 または失敗

ガターアイコンを使用してテスト / スイート / フィクスチャを実行すると、CLion は一時的な Boost.Test 構成を作成します。これは構成のリストではグレー表示されます。一時構成を保存するには、実行構成の編集ダイアログでそれを選択し、 を押します。

Saving temporary test configuration

結果を探る

テストを実行すると、CLion は組み込みのテストランナーウィンドウに結果とプロセスを表示します。テストツリーには、実行中のすべてのテストが 1 つずつ表示されます。テストランナーウィンドウには次のものが含まれます。

  • これまでに実行されたテストの割合を示すプログレスバー

  • 実行中のすべてのテストとそのステータスおよび期間のツリービュー

  • テストの出力ストリーム

  • 失敗した テストを再実行する、 をエクスポートする、 で自動的に保存された以前の結果を開く、特定のテストを簡単に見つけるために のアルファベット順に並べ替える、または の期間で並べ替えて、どのテストが他のテストよりも長く実行されたかを理解するオプションを備えたツールバー。

test runner

関連ページ:

単体テストのチュートリアル

このチュートリアルでは、単体テストのアプローチの概要を示し、CLion でサポートされている 4 つのテストフレームワーク (Google Test、Boost.Test、Catch2、Doctest) について説明します。CLion の単体テストパートでは、プロジェクトにフレームワークを組み込むプロセスを案内し、CLion テスト機能について説明します。単体テストの基本:ユニットテストは、ソースコードの個々のユニットを個別にチェックすることを目的としています。ここでの単位は、フリー関数やクラ...

ライブテンプレート

ライブテンプレートを使用して、ループ、条件、宣言、print ステートメントなどの一般的な構造をコードに挿入します。コードスニペットを展開するには、対応するテンプレートの省略形を入力してを押します。を押し続けると、テンプレート内の 1 つの変数から次の変数に移動します。を押して、前の変数に移動します。次のデモは、ライブテンプレートの使用箇所と、関数の抽出、パラメーターの抽出、ラムダパラメーターを抽出するリファクタリングを示しています。ライブテンプレートの種類:次のタイプのライブテンプレー

テストの実行、デバッグ、終了

ファイルまたはフォルダー内で直接テストを実行するテストを開始する前に特定のアクションが必要なく、コードカバレッジなどの追加オプションを構成したくない場合は、次のオプションを使用してテストを実行できます。テストまたはテストスイート / フィクスチャの横にあるガターアイコンをクリックします。ガターアイコンは、テストの状態に応じて変化します。ガターアイコンは、一連のテストを示します。ガターアイコンは、新しいテストをマークします。ガターアイコンは、成功したテストを示します。ガターアイコンは、失敗したテス...

実行 / デバッグ構成

CLion は、実行 / デバッグ構成を使用して、コードを実行、デバッグ、テストします。各構成は、何を実行し、どのパラメーターと環境を使用するかを定義する、名前付きのスタートアッププロパティのセットです。実行 / デバッグ構成には 2 つのタイプがあります。一時的 — テスト、テストスイート、フィクスチャ、エントリを実行 / デバッグするたびに作成され、ガターアイコン / を使用します。永続的 — テンプレートから明示的に作成されるか、一時的な構成を保存することによって作成されます。永続的な構成は、削除...

テスト結果を調べる

CLion は、実行ツールウィンドウのテストランナータブにテスト結果を表示します。右側のコンソールには、現在のテストセッションの出力が表示されます。テストの実行に関する詳細情報と、テストが失敗したか無視された理由を確認できます。テスト結果リストの上にあるテスト結果ツールバーを使用すると、成功したテストと無視されたテストの表示と非表示を切り替えたり、各テストの実行にかかった時間を表示したり、テスト結果をエクスポート、インポート、並べ替えたりすることができます。実行構成タブの各テストの横に、IDE...

Catch

Catch2 は、軽量のテストフレームワークです。名前は C++ Automated Test Cases in Headers (バージョン 2) の略です。CLion は、Catch バージョン 1.7.2 以降をサポートします。Boost.Test と同様に、Catch2 はモック機能を提供しません。ただし、カバ、FakeIt、トロペロイルなどのスタンドアロンモッキングフレームワークと組み合わせることができます。Catch2 の基本:Catch/Catch2 に詳しくない場合は、その主な概念の説...