2014-01-09 36 views
16

看XCTest和Xcode 5單元測試,並沒有看到如何運行我的單元測試下的儀器在Xcode 5 ...是否可以在Xcode 5的Instruments下運行基於XCTest的測試?

特別是我想在測試期間尋找泄漏(這不必在這個例子中是自動化的,儘管很明顯這很有用)。

可能嗎?

+1

注@ quelish的回答如下。現在Xcode 7通過測試本身的上下文菜單提供 - 謝謝Xcode團隊! – Dad

回答

19

我覺得這是最簡單的方法:

  1. 在測試中的某處設置一個斷點(我一直在做它的設置方法)
  2. 公開賽在儀器新文檔
  3. 運行應用程序並確保其停止在斷點
  4. 從樂器中的目標下拉菜單中選擇附加到進程並向下滾動到您的過程
  5. 單擊記錄,然後在XCode中繼續
+0

有趣。這似乎工作。謝謝。 – Dad

+0

我在看同樣的問題。我在單元測試中有殭屍,我無法弄清楚是什麼導致了它。我應該選擇什麼樣的過程? –

+0

@FergalRooney這將是你的應用程序命名的任何東西。這裏有一個[截圖](http://i.imgur.com/XfnTM95.png)將其附加到我創建的名爲ShapeAnimationTest的測試項目中。在我的原始答案中,我忘記提到在使用樂器之前需要運行應用程序。 – psobko

3

我創建了一個基於我正在測試的mac應用程序目標的新目標,然後將xctest類添加到要編譯的文件中。

我接着又說了/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks/XCTest.framework到要鏈接的框架。

然後添加它的路徑$(DEVELOPER_DIR)/Platforms/MacOSX.platform/Developer/Library/Frameworks運行路徑搜索路徑

然後在main.m文件我增加了以下內容:

XCTestSuite *suite = [XCTestSuite testSuiteWithName:@"My tests"]; 
    [suite addTest:[VideohogCachingTest testCaseWithSelector:@selector(testCompleteSequentialText)]]; 
    [suite run]; 

此運行測試testCompleteSequentialText在類VideohogCachingTest我需要作爲一個正常的應用程序運行,所以讓我來運行通過命令+ R進行測試,或者在這種情況下,使用命令+ I進行分析。然後,我可以找到一個殭屍並追查這個問題,這對我以前來說不是一種可能性。 如果您想運行所有的測試,你可以這樣做:

XCTestSuite *suite = [XCTestSuite defaultTestSuite]; 
[suite run]; 
+0

這對我有幫助,因爲你似乎必須編譯_for profiling_才能在Allocations中獲得Swift符號。請注意,我必須將該路徑也添加到框架搜索路徑,並編輯方案以使配置文件使用調試配置。 – tmandry

8

下面是做到這一點的Xcode 6下的正確方法:

1)在你的Xcode項目,揭示了「產品」文件夾,選擇「.xctest」產品,右鍵單擊,最後在上下文菜單中選擇「在Finder中顯示」。

2)啓動儀器並用您選擇的模板創建一個新文檔。

3)不要「選擇目標...」的文件

4)瀏覽和選擇工具Xcode使用運行位於/Applications/Xcode.app/Contents/Developer/usr/bin/xctest測試(你可以找到在終端中)使用xcrun -f xctest這個位置 - 你會需要啓用「遍歷包」才能在Xcode應用程序中導航。

5)將&從Finder拖放到「Arguments」字段中,在步驟1中顯示的「.xctest」產品 - 這將進入其絕對路徑。

6)點擊「選擇」。

你現在已經準備好運行你的儀器單元測試!

enter image description here

37

在Xcode中,就在測試導航點擊您的測試,然後選擇 「配置文件 」測試名「」:

instruments profile unit test memory

+2

是的!功能請求奏效!現在在Xcode中可用。 (不在Xcode 5中)。 謝謝你指出誰可能會發現這個老問題的人。 – Dad

+3

這似乎與Xcode 8中斷了。菜單項仍然存在,但Instruments只顯示「所有進程」,並且Xcode不會開始測試。 – fzwo

+0

在Xcode 8中,這可能只能與UI測試一致。 – quellish

相關問題