簡體   English   中英

編寫Makefile.am來調用googletest單元測試

[英]Writing a Makefile.am to invoke googletest unit tests

我試圖將我的第一個單元測試添加到現有的開源項目中。 具體來說,我添加了一個名為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

有誰對我有一個簡單的食譜,還是對我來說是神秘的自動制作文檔? :)

如果現有項目已經具有測試結構,那么您應該添加:

TESTS += audio_manager

到現有的測試/Makefile.am。 如果現有項目沒有適當的測試結構,則應該大聲疾呼。

如果在山丘上奔跑是不可接受的,那么將測試結構安裝到位還有很多工作要做,但這並不是無法克服的。 您可能希望將測試作為src的同級對象,但這不是必需的。 從新的Makefile.am開始比從src復制Makefile.am可能更容易,但是也許沒有。 可能您需要做的就是更改以下形式的行:

bin_PROGRAMS = ...

check_PROGRAMS = ...

添加線

TESTS = test-audio-manager

將audio_manager.cc的名稱更改為test-audio-manager.cc(這不是嚴格必要的,但將有助於可維護性。我完全出於個人喜好將_更改為-),並添加了

SUBDIRS = tests/audio

到src / Makefile.am。 (如果已經有SUBDIRS指令,請追加到該賦值或使用+ =)

威廉的答案將我帶到了我需要去的地方。 為了社區,我最終要做的是:

  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

除了補充其他答案中的信息之外,您還可以為TESTS指定多個測試。

無論您指定多少測試,實際上都不必指定兩次,而只需將TESTS設置為$(check_PROGRAMS) -這樣可以防止意外地將您的測試添加到check_PROGRAMS而忘記將其添加到TESTS ,導致將新測試添加到構建中,但從未通過make check運行:

# Unit tests
check_PROGRAMS = test_audio_manager

test_audio_manager_SOURCES  = test_audio_manager.cc

TESTS = $(check_PROGRAMS)

...或對多個測試執行相同的操作:

# Unit tests
check_PROGRAMS = test_audio_manager test_video_manager

test_audio_manager_SOURCES  = test_audio_manager.cc
test_video_manager_SOURCES  = test_video_manager.cc

TESTS = $(check_PROGRAMS)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM