[英]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指令,請追加到該賦值或使用+ =)
威廉的答案將我帶到了我需要去的地方。 為了社區,我最終要做的是:
我在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
現在,運行“ 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.