6

最初の単体テストを既存のオープン ソース プロジェクトに追加しようとしています。具体的には、audio_manager という名前の新しいクラスを追加しました。

src/audio/audio_manager.h
src/audio/audio_manager.cc

実装ファイルの構造を反映した src/test ディレクトリ構造を作成し、googletest単体テストを作成しました。

src/test/audio/audio_manager.cc

今、単体テストをコンパイルして実行するように Makefile.am をセットアップしようとしています。

src/test/audio/Makefile.am

以下から Makefile.am をコピーしました。

src/audio/Makefile.am

誰かが私にとって簡単なレシピを持っていますか、それとも不可解なautomakeのドキュメントですか? :)

4

3 に答える 3

9

既存のプロジェクトに既にテスト構造が配置されている場合は、次を追加するだけです。

テスト += audio_manager

既存の tests/Makefile.am に。既存のプロジェクトにテスト構造が整っていない場合は、絶叫して実行する必要があります。

丘を走るのが受け入れられない場合は、テスト構造を整えるのにかなりの作業が必要ですが、乗り越えられないわけではありません。テストを src の兄弟にすることを好むかもしれませんが、それは必須ではありません。Makefile.am を src からコピーするよりも、新しい Makefile.am で開始する方がおそらく簡単ですが、そうでない場合もあります。おそらく、フォームの行を変更するだけで済みます。

bin_PROGRAMS = ...

check_PROGRAMS = ...

行を追加

TESTS = テスト オーディオ マネージャー

audio_manager.cc の名前を test-audio-manager.cc に変更します (これは厳密には必要ではありませんが、保守性に役立ちます。私は _ を - に変更しましたが、これは純粋に個人的な好みによるものです)。

サブディレクトリ = テスト/オーディオ

src/Makefile.am に。(すでに SUBDIRS ディレクティブがある場合は、その割り当てに追加するか、+= を使用します)

于 2010-03-17T15:38:21.267 に答える
7

ウィリアムの答えは、私がどこに行く必要があるかを教えてくれました。コミュニティのために、私がやったことは次のとおりです。

  1. William の提案に従って、テストをメイン ディレクトリ構造に戻し、test_ を前に追加しました。
  2. 単体テストを有効にするために、src/audio/Makefile.am に数行追加しました。

    # Unit tests
    noinst_PROGRAMS = test_audio_manager
    
    test_audio_manager_SOURCES  = $(libadonthell_audio_la_SOURCES) test_audio_manager.cc
    test_audio_manager_CXXFLAGS = $(libadonthell_audio_la_CXXFLAGS)
    test_audio_manager_LDADD    = $(libadonthell_audio_la_LIBADD) -lgtest
    
    TESTS = test_audio_manager
    
  3. これで、「make check」を実行すると、単体テストが開始されます。

これはすべてここで見ることができます: http://github.com/ksterker/adonthell/commit/aacdb0fe22f59e61ef0f5986827af180c56ae9f3

于 2010-03-18T10:40:09.140 に答える