私は CMake を使用してプロジェクトをビルドしています。Boost ユニット テスト フレームワークを使用するユニット テスト バイナリを追加しました。この 1 つのバイナリにすべてのユニット テストが含まれています。CTest で実行されるようにそのバイナリを追加しました。
ADD_EXECUTABLE( tftest test-main.cpp )
ENABLE_TESTING()
ADD_TEST( UnitTests tftest)
ただし、Visual Studio のビルド出力には、CTest の実行結果のみが表示されます。
Start 1: UnitTests
1/1 Test #1: UnitTests ................***Failed 0.05 sec
0% tests passed, 1 tests failed out of 1
これはあまり役に立ちません。どのテストが失敗したかが分からないからです。コマンドラインから手動で ctest を実行すると、--verbose
実際に何が失敗したかを示す Boost ユニット テストからの出力が得られます。
1: Test command: tftest.exe
1: Test timeout computed to be: 9.99988e+006
1: Running 4 test cases...
1: test-main.cpp(20): error in "sanity_check3": check 1 == 2 failed
1:
1: *** 1 failure detected in test suite "Master Test Suite"
1/1 Test #1: UnitTests ................***Failed 0.00 sec
--verbose
では、CTest を常に実行するために CMakeLists.txt で何を変更する必要がありますか? CMake/CTest で Boost ユニット テストを使用するより良い方法はありますか?
ベストアンサー1
ctest --output-on-failure
オプションを使用するか、環境変数を設定することができますCTEST_OUTPUT_ON_FAILURE
は、テストが失敗するたびにテスト プログラムからの出力を表示します。Makefile とコマンド ラインを使用する場合、これを行う 1 つの方法は次のとおりです。
env CTEST_OUTPUT_ON_FAILURE=1 make check
このStack Overflowの質問と回答Visual Studio で環境変数を設定する方法を示します。