31

特定のプロジェクトのビルド システムに GNU autotools を使用しています。検証用の自動テストの作成を開始したいと考えています。これらを自動的に実行するには、「make check」と入力するだけです。私のプロジェクトは C++ で書かれていますが、他の言語用の自動テストを書くことにもまだ興味があります。

これは、ほとんどすべての単体テスト フレームワークと互換性がありますか (cppunit を使用することを考えていました)。これらの単体テスト フレームワークを make check にフックするにはどうすればよいですか? プロジェクトの残りの部分を構成およびビルドできるようにするために、単体テスト ソフトウェアをインストールする必要がないことを確認できますか?

4

5 に答える 5

32

発行時にテストを実行するには、それらを変数make checkに追加する必要がありますTESTS

単体テストを実行する実行可能ファイルを既に作成していると仮定すると、次のように実行可能ファイルの名前をTESTS変数に追加するだけです。

TESTS=my-test-executable

make checkその後、実行可能ファイルがゼロ以外の値を返すと、自動的に実行され、テストの失敗として報告されます。複数の単体テスト実行可能ファイルがある場合は、それらすべてをTESTS変数にリストするだけです。

TESTS=my-first-test my-second-test my-third-test

そしてそれらはすべて実行されます。

于 2008-10-06T12:56:05.437 に答える
6

最初の段落で 2 つの質問をしているようです。

1 つ目は、GNU autotools ツールチェーンにテストを追加することです。ただし、私の理解が正しければ、これらのテストは、アプリケーションのビルドに必要な環境 (依存するライブラリとツール) が存在することを検証することと、ビルドを次のように適合させることの両方を目的としています。環境 (プラットフォーム固有の違い)。

2 つ目は、C++ アプリケーションの単体テストと、それらのテストをどこで呼び出すかについてです。おそらく configure スクリプトから、autotools ツール チェーンからそうすることを提案しました。ただし、これは従来の方法ではありません。「テスト」ターゲットを Makefile に入れることは、テスト スイートを実行するより従来の方法です。autotools を使用してアプリケーションをビルドおよびインストールするための一般的な手順 (開発者の視点ではなく、少なくともユーザーの視点から) は、configure スクリプトを実行し、次に make を実行し、オプションで make test を実行し、最後に make install を実行します。

2 番目の問題については、cppunit を依存関係にしたくないので、c++ アプリケーションと一緒に配布しないのはなぜですか? ソースコードと一緒に、使用しているアーカイブ形式(tar.gz、tar.bz2、または.zip)に正しく配置できますか。私は過去に cppunit を使用したことがあり、JUnit やその他の xUnit スタイルのフレームワークを使用して満足していました。

于 2008-09-25T03:03:44.410 に答える