2011-12-09 41 views
3

我有幾個單元測試項目,我想測量覆蓋率。所以我遵循How-to for CoverStory和網絡上其他地方的詳細說明。如何在Xcode 4中獲得測試代碼覆蓋率併爲iPhone構建?

我將-fprofile-arcs-ftest-coverage添加到我的測試目標和測試目標中,並按照指定鏈接到/Developer/usr/lib/libprofile_rt.dylib

它的工作原理!當我在iPhone模擬器下運行測試方案時,我得到了我的代碼覆蓋率,測試和應用程序的構建和運行。

但是,當我回到實際的iPhone硬件的運行方案時,我得到了libprofile_rt.dylib的鏈接錯誤。具體來說,我得到

LD:找不到-lprofile_rt

庫我懷疑這裏是libprofile_rt實際上是爲Mac硬件和iPhone庫顯然不能鏈接到內置的二進制對於Mac來說,一般來說。

我的問題是如何運行iPhone的硬件得到我的代碼覆蓋?

我懷疑我可以用我的調試目標的副本來做到這一點,這個副本只用於測試,但是還有另外一個維護另一個目標的麻煩。有沒有其他方法可以使這個工作?我在做一些愚蠢的事情嗎?

+0

這個庫的iOS版本在/Developer/Platforms/iPhoneOS.platform/Developer/usr/lib/libprofile_rt.dylib也許你應該嘗試鏈接新的目標與這一個 –

+0

好找,但那給了我不同的錯誤:我收到一條警告:「忽略文件/Developer/.../libprofile_rt.dylib,在文件中缺少必需的架構armv7」。因爲鏈接器忽略該文件,所以我得到未定義的符號錯誤。於是我去了我的目標和硬編碼armv7的構建設置中的體系結構,並獲得相同的結果。 – ageektrapped

回答

2

可能有點晚,但其實你可以。這是在this presentation,幻燈片32至34解釋。

花了我相當多的時間來找到這個隱藏的寶石。希望這可以幫助這個頁面的未來訪客。

+0

大發現!看起來你必須手動複製這些文件。這很糟糕,但蘋果是唯一能夠解決這個問題的人。 – ageektrapped

+0

是的,手動複製文件是獲取這些gcda文件的唯一方法。這真是一個恥辱,因爲我們的CI準備好咆哮這些文件,並且我們的項目無法在模擬器中運行。也許用Xcode 5;) – teriiehina

0

可能回答這個問題是在這裏:https://stackoverflow.com/a/5140459

的竅門是通過Xcode的組織者獲得* .gcda文件從應用程序的文件目錄的,因爲他們將,當然,可以在設備上生成。

0

答案是:您無法在設備上運行並同時獲得覆蓋範圍。獲得覆蓋範圍的唯一方法是在模擬器上:在模擬器中,用您的測試製作調試目標的副本,設置範圍和不在該目標上的內容,並運行該目標。

我經歷的所有細節在回答這個問題的計算器:Code coverage on iOS Using Xcode 4.2 on Lion

相關問題