2016-04-04 110 views
5

我正在使用UITest測試客觀C應用程序,使用swift進行測試。可能在調用XCUIApplication()後阻止XCode調試調試器terminate()

的XCode 7.3,SIM 9.3

每個測試用例調用XCUIApplication.launch(),它可以殺死通過發送SIGKILL任何運行的應用程序。

Xcode將此視爲崩潰 - 調用main.m上的調試器。要繼續測試套件,我只需點擊調試器中的繼續按鈕。

繼續打後,我的日誌說:

Message from debugger: Terminated due to signal 9 

這種情況是令人沮喪的,因爲它是我的測試用例後1/4發生。使我失去對我正在編輯的文檔的關注,並導致我的測試套件掛起,直到我繼續。

有沒有辦法解決這個問題?

+0

雖然不是直接的解決方案,你可以隨時關閉斷點與^⌘Y或刪除/禁用異常斷點。 –

+0

@JoeMasilotti您建議我刪除哪個斷點? XCode的斷點管理器(⌘7)顯示「無斷點」。這似乎是一種「內置」行爲。按照您的建議(⌘Y)禁用系統範圍內的斷點後,仍然會在UITest重新啓動之間頻繁地轉儲到我的調試器中。 – mkirk

+0

你在測試用例之後做tearDown()嗎? – Che

回答

4

我們遇到了同樣的問題。經過一些調試後,我們發現這是由於您的應用已啓用Background Modes而導致的。

我們的解決方案是爲所有Background Modes禁用的開發和測試製定新的目標。

僅供參考,在項目設置的Capabilities部分,標記爲Background Modes轉動此Off是關鍵。或者,您可以從Info.plist中刪除Require background modes(又名UIBackgroundModes)密鑰

+0

這也修復了XCUIApplication()。launch()「UI測試失敗 - 嘗試啓動失敗」的斷言。 – brigadir

0

您可以在使用xCode終止之後進行調試和/或測試。在菜單中:

  1. 調試
  2. 附加到進程
  3. 選擇Likely TargetsBy Process Identifier (PID)