2009-12-22 46 views
6

我最近開始單元測試我爲iPhone編寫的應用程序。我有基本的創建我自己的測試,即使它看起來有點不理想。然而,我很難用gcov設置代碼覆蓋率分析。如何在iPhone SDK中設置gcov進行代碼覆蓋率分析?

我按照這裏的說明:http://www.cubiclemuses.com/cm/articles/2009/05/14/coverstory-on-the-iphone/,這在其他地方重複非常類似。我已經嘗試從他們的Mac工具箱中使用Google's AppleScript來做這件事,以防萬一我在Xcode中輸入錯誤。

我已經使用Apple的iPhoneUnitTests sample作爲基礎項目,並且只是運行Google的AppleScript,以針對CalcTests目標啓用代碼覆蓋測試,以獲得源代碼無法運行的源代碼自動化示例。不管我用什麼情況下,我自己的代碼,蘋果,手動設置適當的變量或讓谷歌的AppleScript的爲我做的,一旦測試完成運行的所有我得到的是在調試控制檯這些錯誤:

profiling:/Users:Cannot create directory 
profiling:/Users/jpo/Downloads/iPhoneUnitTests/build/iPhoneUnitTests.build/Debug-iphoneos/CalcTesting.build/Objects-normal/armv6/CalcViewController.gcda:Skip 
profiling:/Users:Cannot create directory 
profiling:/Users/jpo/Downloads/iPhoneUnitTests/build/iPhoneUnitTests.build/Debug-iphoneos/CalcTesting.build/Objects-normal/armv6/Calculator.gcda:Skip 
profiling:/Users:Cannot create directory 
profiling:/Users/jpo/Downloads/iPhoneUnitTests/build/iPhoneUnitTests.build/Debug-iphoneos/CalcTesting.build/Objects-normal/armv6/CalcAppDelegate.gcda:Skip 
profiling:/Users:Cannot create directory 
profiling:/Users/jpo/Downloads/iPhoneUnitTests/build/iPhoneUnitTests.build/Debug-iphoneos/CalcTesting.build/Objects-normal/armv6/main.gcda:Skip 

gcda文件沒有創建,因此我沒有什麼可以分析的。 任何幫助,這將不勝感激。

回答

6

解決方法是,這些指南是指在iPhone模擬器中運行代碼。因爲我正在運行應用程序級別的測試,所以我正在交叉分析並需要遵循this information

然後設置環境變量GCOV_PREFIX將其轉儲到我的應用程序的Documents目錄中,然後使用Xcode中的Organizer從設備下載我的應用程序包以將.gcda文件從Documents目錄中取出。這非常麻煩,幾乎不適用於自動覆蓋測試,但它是我能夠看到的唯一解決方案,因爲在沙箱中運行的約束以及使用僅可用於在設備上測試的類(即MediaPlayer.framework)。