問題タブ [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.

0 投票する
3 に答える
8073 参照

command-line - 実行時に CTest でコマンドライン引数を渡す方法

私は CTest を使用しており、実行時にコマンドライン引数を基礎となるテストに渡したいと考えています。コマンド ライン引数を CMake/CTest スクリプトにハード コードする方法があることは知っていますが、実行時にコマンド ライン引数を指定し、それらの引数を CTest を介して基になるテストに渡したいと考えています。

これは可能ですか?

0 投票する
1 に答える
984 参照

testing - CTest を使用して 2 つのファイルの違いを確認する方法は?

いくつかのレガシー ソフトウェア用の統合テストを作成しようとしています。テストを行う現在の方法は、既知の入力でコードを実行し、出力を既知の出力と手動で比較することです。

私はすでに CMake を使用しているので、このプロセスを自動化したいのですが、CTest でこれを行いたいと考えています。チェックする必要がある入力/出力が約 20 あります。

これを行う正しい方法は何ですか?CMake の経験は中程度で、CTest の経験はさらに少ないです。

0 投票する
0 に答える
124 参照

c++ - 複数のビルドにわたる C++ のテストから測定された期間の Jenkins でプロットを表示する方法

ブースト タイマーを使用して計算の時間を実際に測定する複数のテスト ケースがあります。

テスト ケースは Boost Test を使用して定義されます。

テストの実行には CMake を使用しているため、CTest を使用します。テストはすべて add_test() で指定されます。CTest は XML ファイルを生成するので、対応する Jenkins ジョブで単体テストの結果を表示できます。

パフォーマンス テストでは、テスト ケースが成功したかどうかだけでなく、測定された期間も表示したいと考えています。

C++ (ブースト テスト/CMake を使用) で、測定された期間を何らかの方法でマークし、それらを 2 つの列を持つテスト ケースのペアを含むファイルに変換することは可能ですか?

次に、このファイルと、Jenkins の以前のビルドからのすべての同様のファイルをプロットとして表示したいと思います。ユーザーは、過去の複数のジョブの測定値を追跡して、パフォーマンスが向上したかどうかを確認できるはずです。

したがって、Jenkins はデータを次のようなファイルに変換する必要があります。

たぶん、私が知らない完全に異なるアプローチがあるでしょう。

0 投票する
2 に答える
1764 参照

unit-testing - CMake: 独自の CMake スクリプト マクロ/関数を単体テストする方法は?

標準の CMake コマンドの便利なラッパーをいくつか作成しました。この CMake スクリプト コードを単体テストして、その機能を確認したいと考えています。

私はある程度の進歩を遂げましたが、助けてもらいたいことが2つあります。

  1. 独自の CMake スクリプト コードを単体テストする「公式の」方法はありますか? CMake を実行するための特別なモードのようなものはありますか? 私の目標は「ホワイト ボックス テスト」です (可能な限り)。
  2. グローバル変数と変数スコープの問題を処理するにはどうすればよいですか? プロジェクトのキャッシュをロードしてグローバル変数をテストに挿入するか、テスト CMake ファイルを構成するか、-D コマンド ライン オプションを介してプッシュしますか? 変数スコープのシミュレーション/テスト (キャッシュされているものとキャッシュされていないもの、マクロ/関数/インクルード、参照によって渡されるパラメーター)?

まず、/Tests の下、特に Tests/CMakeTests の下にある CMake ソース コード (私は CMake バージョン 2.8.10 を使用しています) を調べました。膨大な数の種類があり、それらの多くは 1 つのテスト ケースに特化しているようです。

そのため、 CMake++などの利用可能な CMake スクリプト ライブラリも調べて解決策を確認しましたが、単体テストがある場合は、独自のライブラリ関数に大きく依存しています。

0 投票する
1 に答える
3904 参照

cmake - CMake - 実行可能ファイルを作成するが、「すべて」のターゲットに追加しない方法は?

CMake を使用して、一連の実行可能ファイルをビルドし、次のようにテストとして追加しました。

これで問題なく動作します。実行可能ファイルが作成され、テストが正しく追加されます。allただし、テスト実行可能ファイルをターゲットに追加したくありません。

テストを他のすべてのものと一緒にビルドするのではなく、テストを実行する直前にビルドしたいと思います。の一部として、make testまたは一部としてctest

これどうやってするの?

0 投票する
2 に答える
6312 参照

c++ - CMake で予想されるビルド失敗テスト

特定のものがビルドに失敗していることを確認するとよい場合があります。たとえば、次のようになります。

これらのタイプのものを CMake/CTest に組み込むことは可能ですか? 私はでこのようなものを探していますCMakeLists.txt:

(もちろん、私の知る限り、これらの特定の CMake ディレクティブは存在しません。)

0 投票する
3 に答える
3111 参照

c++ - std::cerr が std::cout を待機しない (CTest の実行時)

コンテキスト

ユーザー向けのメッセージを出力するロガーを作成しました。レベルが「debug」、「info」、または「warning」std::coutのメッセージは に出力され、レベルが「error」または「system_error」のメッセージは に出力されstd::cerrます。私のプログラムはマルチスレッドではありません。Linux openSUSE 12.3 と gcc 4.7.2 および CMake 3.1.0 で作業しています。

私の問題

エラー メッセージ (に出力)std::cerrが長い情報メッセージ ( に出力) の後に続き、出力がCTest によってstd::coutファイルにリダイレクトされるときに、エラー メッセージが情報メッセージに表示されることがあることがわかりました (以下の例を参照)。LastTest.log私はこの動作をよく理解していませんが、書き込みスレッドが起動されstd::cout、コードが続行され、最初の書き込みスレッドが終了するのを待たずに別の書き込みスレッドが起動されると思いstd::cerrます。

only を使用せずにそれを回避することは可能std::coutですか?

端末に問題はありません。これは、CTest が出力をLastTest.logファイルにリダイレクトする場合にのみ発生します。

私のバッファがフラッシュされていることに注意してください。std::endlへの呼び出しの後に来るのは問題ではありませんstd::cerr

予想される動作:

何が起こるのですか :

ロガーの呼び方

std::coutこれは、またはstd::cerrロガーを使用して呼び出す方法の例です。私はそのようなマクロでロガーを呼び出します:

ここで、ログ シャネルは端末出力専用のオブジェクトであり、書き込み関数は次のとおりです。

ログ命令が実行されると、バッファがフラッシュされることがわかります。

0 投票する
0 に答える
599 参照

cmake - ctest --output-on-failure が機能しない

documentation によると--output-on-failure引数はctestに、失敗したときにテスト出力を表示するように指示します。2 番目のアプローチは、env var を設定することCTEST_OUTPUT_ON_FAILUREです。どちらのオプションも機能しません。

appveyorでわかるように、いくつかのテストは失敗しますが、出力はありません。

GNU/Linux では、設定はCTEST_OUTPUT_ON_FAILURE機能します。