2009-09-30 25 views
4

我們有一個autotools項目,其中包含單元和集成測試的混合,所有這些測試均通過「make check」運行。這並不理想,因爲一些集成測試需要一段時間,並且具有各種依賴關係(數據庫等)。將其他製造/測試目標添加到自動工具項目

我想分離集成測試併爲它們指定它們自己的目標。這樣,單元測試仍然可以經常運行(通過make check),集成測試可以根據需要以類似的方式運行。

是否有直接的(或其他方式)添加額外的製作目標?

注意:我也許應該補充說這是一個很大的項目,所以用手編輯/維護每個makefile文件是不可取的。如果可能的話,我想這樣做'autotools方式'。

- 更新1 -

我已經嘗試Jon的解決方案,這是一個更近了一步,但也不能令人信服。我仍然有幾個問題:

1)遞歸 - 我可以在構建樹的根目錄下修改makefile.am,以及任何包含測試的目錄,但它似乎應該可以這樣做,我不必更改層次結構中的每個Makefile.am。 (檢查目標是這樣工作的,畢竟)

2).PHONY - 我不斷收到有關.PHONY的消息被重新定義。這是可以理解的,因爲它是由另一個軟件包(特別是doxygen)設置的。我如何讓這兩場比賽在一起很好?

回答

0

由於沒有更多的答覆,我要回答我的解決方案。

我通過完全消除遞歸來解決了遞歸問題。使用this page 作爲指導,我將整個項目從遞歸make切換到非遞歸make。然後,我將非遞歸檢查相關目標(檢查,檢查,檢查測試等)克隆到集成測試的一組新目標中。到目前爲止,這個工作非常好。

注意:您可能想知道爲什麼我不只是克隆遞歸目標。坦率地說,我找不到它們。要麼我不知道該在哪裏尋找(規則不在生成的Makefile中),或者隱式地發生了某些事情,並且我不明白自動工具足以遵循它。

至於與.PHONY被重新定義的問題,我還沒有找到解決方案,除了有條件地排除其他定義時,我正在進行集成測試。

4

在您的am文件中,所有make語法都會傳遞到生成的Makefile中。所以如果你想要一個新的目標,就像在Makefile中創建它一樣,它會出現在自動生成的Makefile中。將以下內容放在您的am文件的底部。

 
integration-tests: prerequisites.... 
     commands to run test 

.PHONY: integration-tests 
+0

'.PHONY'做什麼? – 2015-06-17 13:32:00

+0

@KarlRichter .PHONY表示集成測試不是一個文件,而只是一個目標名稱 – aberaud 2017-05-05 18:02:35

相關問題