Linux と Windows の両方で実行される数値計算ソフトウェアをテストする必要があります。テストには、数値回帰テストで説明されているものと同様に、出力を既知の良好な出力などと比較することが含まれ ます。明確にするために、出力は必ずしも数値ではなく、分類器またはテキストのカテゴリ予測である可能性があります。Linux では違います。Windows では別のことですが、私の目標は、各テストを 1 回だけ記述することです。CMake/CTest を使用してクロスプラットフォーム テストを生成できることは知っていますが、ゼロ以外の終了ステータスのチェックに限定されているようです。各プラットフォームで適切な「diff」を自動的に選択できるソフトウェアはありますか? 私が知らないCTestモジュール/パッケージでしょうか?
1 に答える
CMake と CTest は、高度なテスト評価を提供しません。主に、合格したテスト、スキップされたテスト、失敗したテスト (ゼロ以外の戻り値、例外、SIGTERM) を区別します。
FAIL / PASS_REGULAR_EXPRESSIONを使用して出力を評価します。両方のプロパティに正規表現を使用できます。正規表現は非常に限られています。特に数値誤差を推定するには、正規表現は役に立ちません。CMake の機能を拡張する、より複雑な CMake 関数を作成することもできます。私はこれを行うプロジェクトを知りません。
単体テストに特化した外部ツールを利用できます。このツールからの結果値は、CTest によって評価されます。言語によっては、googletest、JUnit、Python unittest、さらには diff などの外部ツールを使用できます。
独自の出力評価スクリプトを記述します。たとえば、Perl や Python は使いやすく、優れた解析品質を備えています。を介して、実際のテストをパラメータとしてスクリプトを追加します
add_test
。スクリプトはテストを実行し、出力を比較して、結果を CTest に通知します。
そのため、Perl や Python などの追加の言語インタープリター、またはサード パーティのヘルパー ツールをインストールする必要があります。または、プラットフォームごとに評価を書き続けることもできます。