2014-11-25 64 views
0

我想在Jenkins上運行C++的谷歌測試。

目前,我經歷了4個階段在兩個作業
Jenkins C++測試佈線

  1. 作業的分離式,構建
    • 一)代碼版本(在我的情況產生庫)
    • b)測試構建(與上述庫鏈接)
  2. 作業B,測試由穩定的完成觸發
    • 一)測試執行
    • B)報告生成(通過JUnit的插件)

我執行通過 「執行shell」 測試生成XML報告反饋到報告生成
我認爲我的佈線搞砸了,因爲

  • 失敗的測試版本(1b)會將代碼構建標記爲失敗,
  • 作爲構建步驟(2a)執行測試感覺像是黑客攻擊。

有沒有乾淨的方式來構建,運行報告谷歌測試從代碼構建獨立的?

回答

1

我們的項目的結構是這樣的:

在生成文件中,我們有

all: ${PROGRAMS} ${TEST_PROGRAMS} 

run: all coverage 

check: ${TEST_PROGRAMS} 
     for p in $^; do ./$$p || exit 1; done 

coverage: check 
     lcov ... 

在開發機器,我們只是「讓跑」,它建立,測試相媲美,並計算覆蓋。

在哈德森(唉,我們繼承了它,我無法說服大家切換到詹金斯),我們有三個工作:

  • 編譯:運行「讓所有」建立的所有可執行文件和測試程式。如果成功,觸發「測試」
  • 測試:運行「make check」執行所有測試程序。如果成功,觸發「覆蓋」
  • 覆蓋:運行「覆蓋-o檢查」以產生覆蓋信息(不再次運行測試)。

對於早期失敗,我們這樣構建它:構建是通過簽入觸發的,並且可以非常快速,而運行測試套件需要固定(且相當長)的時間量。此外,如果代碼不建,沒有一點嘗試運行它:)

在我看來,沒有建立測試程序出現故障代碼編譯,因爲它可能一個問題的指示與圖書館,不一定與測試程序。如果您想查看庫和測試的單獨狀態,可以創建單獨的作業。

哈德森沒有「測試」的概念。運行測試程序與運行「make」沒有區別(如果從makefile運行測試,與運行編譯器和連接器沒有區別)。