5

ユニットテストと統合テストが混在するautotoolsプロジェクトがあり、それらはすべて「makecheck」を介して実行されます。一部の統合テストには時間がかかり、あらゆる種類の依存関係(データベースなど)があるため、これは理想的ではありません。

統合テストを分離して、独自のmakeターゲットを割り当てたいと思います。そうすれば、単体テストを(make checkを介して)頻繁に実行でき、統合テストも同様の方法で必要に応じて実行できます。

追加のmakeターゲットを追加する簡単な(またはその他の)方法はありますか?

注:これは大規模なプロジェクトであるため、すべてのmakefileを手動で編集/保守することは望ましくありません。可能であれば「autotoolsの方法」でやりたいと思います。

-更新1--

私はジョンの解決策を試みました、そしてそれは一歩近づいていますが、完全にはそこにありません。私はまだいくつかの問題を抱えています:

1)再帰-ビルドツリーのルートにあるmakefile.amと、テストを含むディレクトリを変更しても問題ありませんが、これを行う方法があるはずです。階層内のすべてのMakefile.amを変更します。(結局のところ、チェックターゲットはこのように機能します)

2).PHONY-.PHONYが再定義されているというメッセージが表示され続けます。別のパッケージ(具体的にはdoxygen)によって設定されているため、これは理解できます。2つを一緒にうまくプレイするにはどうすればよいですか?

4

2 に答える 2

5

am ファイルでは、すべての make 構文が生成された Makefile に渡されます。したがって、新しいターゲットが必要な場合は、Makefile で行うように作成するだけで、自動生成された Makefile に表示されます。以下を am ファイルの一番下に置きます。

統合テスト: 前提条件....
        テストを実行するコマンド

.PHONY: 統合テスト
于 2009-09-30T19:51:07.600 に答える
0

これ以上の回答がなかったので、私の解決策で回答します。

再帰を完全に排除することで、再帰の問題を解決しました。このページをガイドとして使用し て、プロジェクト全体を再帰的 make から非再帰的 make に切り替えました。次に、非再帰的なチェック関連のターゲット (check、check-am、check-TESTS など) を統合テスト用の新しいターゲット セットに複製しました。これまでのところ、これは非常にうまく機能しています。

注: 代わりに再帰的なターゲットを複製しなかった理由を不思議に思われるかもしれません。率直に言って、私はそれらを見つけることができませんでした。どこを見ればよいかわからなかった (生成された Makefile にルールが含まれていなかった) か、暗黙のうちに何かが起こっていて、それに従うのに十分なほど autotools を理解していません。

.PHONY が再定義される問題については、統合テストを行っているときに他の定義を条件付きで除外する以外に、まだ解決策が見つかりません。

于 2009-10-08T22:20:02.500 に答える