2013-11-23 122 views
5

我正在研究一個包含超過50個庫和可執行文件的大型C++項目。我開始爲每個這些模塊添加googletest測試。我讀到谷歌建議把測試放在可執行文件中,而不是放在庫中以使生活更輕鬆。爲每個單獨的組件創建一個單獨的可執行文件我將獲得超過50個測試可執行文件,並且爲了一次運行它們,我需要創建一個外部腳本,這也需要將它們的輸出組合到一個腳本中。 這是推薦的事情嗎?使用googletest一次運行多個測試模塊的單元測試

或者我應該爲每個獨立模塊的測試創建一個庫,並將所有這些庫鏈接到單個測試可執行文件?但是,對單個模塊進行測試變得不太方便。我需要構建所有測試,並通過gtest_filter標誌指定主測試可執行文件,此時應執行哪些測試。

這真的會幫助我聽到其他人如何做到這一點,以及這裏的最佳做法是什麼。

謝謝

+0

對於你的情況來說,有些難以分辨'最佳實踐',但是我會爲每個模塊(庫)分配不同的測試運行器。在使用JUnit-XML格式(例如XSLT)時,收集輸出並將它們合併成單個報表可能最容易。 –

+0

你正在使用什麼構建系統?我想你應該能夠爲所有50個庫創建單個測試可執行文件,如果需要,可以爲個人庫創建PLUS 50測試運行器。 我自己的建議是有一個單一的測試可執行文件,但這是個人偏好。所有測試的組合運行時間是多少?我希望有一個單獨的可執行文件,以便於執行自動化測試。 – NicholasM

+0

感謝您的兩條評論。我想這裏提出的兩個問題都可以接受。我認爲在這一點上,我會選擇爲每個測試組件創建一個單獨的可執行文件,並將結合使用一個外部腳本來運行它們,這些外部腳本也會將其輸出結合到一個文件中。 – noplk1

回答

1

[...],並以一次我需要創建一個 外部腳本,也需要它們的輸出組合成單一 一個運行它們。

也許實際上並不需要將輸出合併到單個文件中。例如,對於Jenkins,您可以爲Google Test輸出文件指定通配符模式。

所以,如果你真的只是想看看在詹金斯(或哈德森或任何CI工具使用)的谷歌測試結果,這可能是一個可能的解決方案:

你會運行所有測試可執行從簡單的腳本(甚至從制定規則),參數--gtest_output=xml:後跟目錄名稱(即以斜線結尾)。然後,每個測試可執行文件都會將自己的XML文件寫入該目錄,然後可以配置您的CI工具以讀取該目錄中的所有文件。

+0

我們所有的項目創建gtest可執行文件的名稱,以'gtest'開頭,我們有cmake配置爲把所有可執行文件在我們編譯目錄的bin direcotory下,所以我可以將它翻譯成'mkdir -p $ {WORKSPACE}/xml /;找到build/bin -name「gtest *」-exec {} --gtest_output = xml:$ {WORKSPACE}/xml/{}。xml \;'然後通配符在我使用'xml/build/bin/*。xml'(注意查找用{}給出了全名,所以需要額外的目錄)。 – sage

相關問題