問題タブ [ctest]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - CMake と CTest: テストの依存関係を自動的に実行する
私の CMakeLists.txt には、次のようなものがあります。
testX
そして、何らかの方法で実行し、そのすべての依存関係を自動的に実行したいと考えています。何かのようなもの:
その結果、CTest が実行さtextY
れtestZ
ますtestX
。これを行う方法はありますか?
または、現在不可能である場合、依存関係に関する情報を CMake ビルド ディレクトリからスクリプトで抽出する方法はありますか?
c++ - Valgrind は KDevelop の CTest で作業ディレクトリを変更します
Ctest を使用して Helgrind でテストを開始しています。
ただし、テストの作業ディレクトリは /usr/bin のようです。以下を指定する場合でも:
これは私が推測するデフォルトであるべきです。たとえば、memcheck を使用すると機能します。
テストは KDevelop から開始されます。
boost - Boost.Tests: main の代わりに関数名を指定する
cmake ビルド システムを使用してプロジェクトに取り組んでいます。デフォルトでは、CMake には一連の C/C++ コードから単一の実行可能ファイルを生成するための優れたフレームワークがあります。cmake 関数はcreate_test_sourcelistと呼ばれます。これが行うことは、他の C/C++ コードを呼び出す単一のメイン エントリ ポイントを持つ C/C++ ディスパッチャを生成することです。
したがって、次のような関数シグネチャを持つ C/C++ ファイルがたくさんあります:int TestFunctionality1(int argc, char *argv[])
もちろん、さらに作業が増えることを意味しない限り、そのままにしておきたいと思います。
このシステムを維持し、使用を開始するにはどうすればよいBOOST_CHECK
ですか? 実際のメイン エントリ ポイントが呼び出されないことを指定する方法がわかりませんでしたint main(int argc, char *argv[])
。
私の目標は、Jenkins と統合するためのフレームワークを用意することです。このプロジェクトでは既に Boost を使用しているため、既存の CMake テスト スイートを書き直したり、すべてのテストを独立したmain
関数に変更したりすることなく、これを実行できるはずです。
unit-testing - CMake と CTest のデフォルトの「test」コマンドは、特別な名前のテストをスキップします
CMake で CTest を使用していくつかのテストを実行しています。enable_testing()
のデフォルト コマンドを提供するコマンドを使用しますmake test
。私のサブディレクトリ内のすべてのテストは (add_test
コマンドを実行することによって)説明されmake test
、1 つの問題を除いてうまく機能します。
という名前の特定のテストがありますが、skip_test
実行するときに実行したくないものですmake test
。カスタムターゲットを追加して実行できるようにしたいと思いますmake skip_test
。そのテストが実行されます。
これを行うにはadd_custom_target(skip_test ...)
、CTest に-R
フラグを付けて提供し、名前に「skip_test」を含むファイルを探すように指示します。これも機能するようです。私の問題は次のとおりです。make test
コマンドを無視するにはどうすればよいskip_test
ですか?
コメントアウトしenable_testing
て独自の を追加しようとするとadd_custom_target(test ....)
、「テストが見つかりません!!!」というメッセージが表示されます。今は または のいずれmake test
かmake skip_test
です。また、カスタム CTest ファイルを作成して追加しようとしましたset(CTEST_CUSTOM_TESTS_IGNORE skip_test)
。これによりmake test
、「skip_test」が無視されるようになりましたが、実行make skip_test
すると「テストが見つかりません!!!」と応答するようになりました。
任意の提案をいただければ幸いです!
unit-testing - CMake の add_test() で ARGN をカスタム スクリプトに渡す
単体テストでARGN をカスタムrun_test.cmake
に渡したいです。私が CMake スクリプトで行うことは次のとおりです。
どこ
問題は、(1) configure メッセージの出力中にすべての引数を取得するのARGN: ARG1;ARG2;ARG3
に対し、(2) 実行時のメッセージの出力中に最初の引数のみを取得することTEST_ARGN: ARG1
です。
それは間違いなく私のCmakeの理解不足ですが、何が間違っているのか知りたいです。
cmake - cmake/ctest で実行する機能テスト スクリプトを作成する方法
cmake の下で、次のコマンドをCMakeList.txt
シェル コマンドで実行できるテストを作成するだけで十分ですctest
。
残念ながら、cmake のドキュメントには、有効なテスト実行可能ファイルを構成する要素がまったく示されていません ( <test_command>
)。通常、テスト実行可能ファイルは、google-test などのフレームワークを使用して生成されます。少し複雑ですが、cmake の下で google-test の下でテストを作成する方法を示す良い例が Web にあります。
ここで、cmake/ctest の使用を、コンパイルする必要がないため、google-test で実行できない機能テスト スクリプトに拡張したいと考えています。それから私の質問: を介して直接アクティブ化される有効な手書きのテスト実行可能ファイルを構成するものは何ですかadd_test
:
- テスト実行可能ファイルは出力を生成しますか? stdout または stderr に書き込みますか?
- テスト実行可能ファイルは、成功または失敗を示す特定の値を返す必要がありますか?
- または、cmake docs のどこで答えを見つけることができますか?
ctest - cmocka ソースから CTest プル テスト名
CTest を使用して、cmocka で記述されたテストを実行しています。CTest に私の cmocka ソースからテスト名を読み取らせ、出力でそれらを提供することが可能かどうかを知りたいです。たとえば、テスト ソースにtest_order_correct
、test_order_received
およびtest_customer_happy
の 3 つのテストが含まれている場合、これらのテストを という実行可能ファイルにビルドしtests
、CTest で実行すると、次のような出力のみが得られます。
が見たいです:
これは可能ですか、それとも CTest はそのようなソースを掘り下げることができませんか? 私がこれをタイプしていると、その言葉ではますます可能性が少なくなっているように思えます。