2012-06-21 72 views
1

我正在使用Google Test和Google Mock框架進行項目的單元測試。我有各種單元測試項目,並希望自動化我的構建,以運行所有這些項目。Google Test返回值

我期待單元測試的可執行性在成功時返回0,在任何測試失敗時返回1(或任何其他值),但是當所有測試通過時我都會得到1。我收到了一些GMOCK警告,但找不到任何有關影響返回值的警告的文檔。

我試着運行測試過濾來運行一個測試用例,其中沒有GMOCK警告被觸發,仍然得到1作爲返回值。

我有幾個DISABLED測試用例,所以我評論他們。仍然獲得1作爲返回值。

根據文檔和代碼註釋爲RUN_ALL_TESTS宏,返回值應爲0

我想不出別的造成返回值1.我缺少什麼?

+0

順便說一句:我沒有使用單元測試可執行文件的返回值來檢查失敗,而是掃描(XML)測試報告以查找「失敗」。 –

+0

我不希望Gmock警告影響'RUN_ALL_TESTS()'的返回值。你有什麼特別的警告?你能舉出一個能證明問題的小型測試案例嗎? – Fraser

+0

請參閱更新後的問題 –

回答

4

如果你從gtest.h的RUN_ALL_TESTS()宏的定義還有的明確規定,0無故障恢復:

// Use this macro in main() to run all tests. It returns 0 if all 
// tests are successful, or 1 otherwise. 
// 
// RUN_ALL_TESTS() should be invoked after the command line has been 
// parsed by InitGoogleTest(). 

#define RUN_ALL_TESTS()\ 
    (::testing::UnitTest::GetInstance()->Run()) 

Appearantly甚至警告(從gmock)可能導致返回值1.嘗試如果你擺脫了gmock警告會發生什麼(例如使用s.th.如NiceMock <>來包裝你的模擬類實例)。

+0

擺脫模擬警告並不是那麼容易,因此我的問題:)我編輯它,以便說清楚。 –