15

私のプロジェクトはビルド システムとして CMake を使用しており、Boost.Test テスト ケースを実行したいと考えています。

どうすればそれを達成できますか?Boost.Build では、次のように実行できます。

import testing ;

use-project /my_lib : ../src ;

unit-test my_test
          : my_test.cpp
            /my_lib
          boost_unit_test_framework
        ;

lib boost_unit_test_framework ;
4

3 に答える 3

15

CMake 自体は単なるビルド システムです。CTest は、CMake と統合された単なるテスト ランナーです。どちらも単体テスト フレームワークではありません。その仕事は Boost.Test または googletest で行うことができます。

CMake プロジェクトで Boost.Test ベースの単体テスト プログラムを使用するには、まず CMake をビルドし、スクリプトでadd_executableとを使用して単体テスト バイナリをリンクします。次に、ユニット テスト バイナリを CTest のテスト リストに追加して、およびで実行できます。target_link_librariesCMakeLists.txtenable_testingadd_test

本当に凝りたい場合は、CMake のドキュメントを調べて、CMake ですべてのソース ファイルを検索し、ユニット テストを自動的に見つけてビルドする方法を確認できますが、まず最初に...

于 2010-11-28T23:10:26.823 に答える
11

https://github.com/rpavlik/cmake-modules/でいくつかのモジュールを作成しました。これには、ブースト テストを統合するためのものも含まれます。それらを使用する最も簡単な方法については、そのリポジトリの readme を参照してください。

次に、test_DimensionedQuantities.cpp が boost.test テスト ドライバー ソースであると仮定して、次のことを行います。

include(BoostTestTargets)
add_boost_test(DimensionedQuantities
 SOURCES
 test_DimensionedQuantities.cpp)

これにより、いずれかのブースト テストが失敗した場合に失敗する CTest に表示されるテストが 1 つだけ追加されます。名前でテスト ドライバーに指定できるテストがある場合 (最も単純なマクロはこのカテゴリに分類されます)、次のようなことができます。

include(BoostTestTargets)
add_boost_test(DimensionedQuantities
 SOURCES
 test_DimensionedQuantities.cpp
 TESTS
 CheckCollision
 BodyPoseNotCorrupted
 CheckGraspTransform
 BodyFollowsMockManip1D
 BodyFollowsMockManip2D
 BodyFollowsMockManip3D)

a: 含まれている UTF のバージョン、b: 静的リンク、または c: 動的リンクの最適なオプションを選択するためのヘッダーの構成、ライブラリへのリンクなど、さらに多くのオプションがあります。cmake ファイルを参照してください。情報のために。

于 2010-11-30T21:19:27.283 に答える
-5

CMake ドキュメント/ブックの CMake テスト プロジェクトおよび/または CTest の内容を参照してください。

于 2010-11-28T22:02:22.130 に答える