當我在Swift中使用XCTest運行單元測試時,它們在代碼覆蓋範圍關閉時運行正常。但是,一旦我嘗試啓用代碼覆蓋,我有一個失敗的構建/測試,4個類給出以下錯誤消息:命令因信號失敗:分段錯誤:11。在Swift中打開代碼覆蓋率時出現分段錯誤11
回答
沒有代碼,編譯設置等,很難說肯定,但你應該檢查的一件事是確保你在單元測試類中使用了一個@testable
導入標誌。
例如,在您的單元測試課程的頂部名爲MyApp
的項目中,您將包含以下導入@testable import MyApp
。
您還需要檢查以確保您遵循了啓用覆蓋的流程。這些信息被記錄在蘋果的開發者門戶:
我已經遵循了所有這些步驟。如果在引入代碼覆蓋率時出現了分段錯誤,那麼將其引入項目以進行調試或研究比我目前所處的位置更深的一般建議是什麼? – fadfad
這裏是我工作(因爲所有的其他建議並沒有我的情況下工作)。當試圖運行代碼覆蓋範圍爲ON的單元測試時,我在特定的Swift類上得到了分段錯誤11。事實證明,我們有像這樣一類的財產三元表達式:
let cellBorder : CGFloat = MyHelperClass.isIPad() ? 10.0 : 6.0
使其成爲一個懶惰的VAR解決了這一問題:
lazy var cellBorder : CGFloat = MyHelperClass.isIPad() ? 10.0 : 6.0
需要明確的是,代碼編譯和運行良好直到我們嘗試開啓代碼覆蓋範圍。我也發現這個Open Radar和this guy's post概述瞭解決方案。似乎是一個蘋果的錯誤。
這解決了我的問題!太棒了,@ n8tr –
我有同樣的問題。 'lazy'解決了,但是這也解決了它: 'let cellBorder:CGFloat = MyHelperClass.isIPad()? CGFloat(10.0):CGFloat(6.0)' – Dmitry
查看有關類似問題的此錯誤報告。 https://bugs.swift.org/plugins/servlet/mobile#issue/SR-1825
當我實現一個需要一個作爲惰性變量實現的可選變量的協議時,我得到了同樣的錯誤。
- 1. PHPUnit代碼覆蓋率給出了zend_mm_heap損壞或分段錯誤11
- 2. 我打開時出現分段錯誤
- 3. 代碼覆蓋率分析
- 4. 存檔iOS應用程序時出現「分段錯誤:11」(Swift)
- 5. Cobertura代碼覆蓋率是錯誤的
- 6. 分段錯誤:11 Swift 2
- 7. 在C中打開文件時出現分段錯誤?
- 8. 代碼覆蓋率:.NET代碼覆蓋率和SonarQube VSTS集成
- 9. 聲納代碼覆蓋率:%代碼覆蓋率不一致
- 10. 打字稿代碼覆蓋率
- 11. 在Qt中重現錯誤:調試代碼時出現分段錯誤
- 12. C打印時出現分段錯誤
- 13. 代碼覆蓋率 - 哪個代碼覆蓋哪個代碼?
- 14. 分析代碼覆蓋率消失
- 15. VSTS代碼覆蓋錯誤?
- 16. 代碼覆蓋率 - 消除誤報
- 17. 差代碼覆蓋率
- 18. PHPUnit代碼覆蓋率0%
- 19. 代碼覆蓋率與SCCT
- 20. ESB代碼覆蓋率
- 21. 全部代碼覆蓋率
- 22. Xcode 8代碼覆蓋率
- 23. 爲Perl代碼覆蓋率
- 24. TDD和代碼覆蓋率
- 25. rspec的代碼覆蓋率
- 26. 代碼覆蓋率爲Android
- 27. CoffeeScript代碼覆蓋率
- 28. PHPUnit代碼覆蓋率
- 29. MSTest代碼覆蓋率
- 30. Jacoco代碼覆蓋率
這可能是證書或構建目標的問題嗎?我發現這個消息來源說這是從歸檔中獲取seg故障時的問題。也許嘗試重建證書? http://stackoverflow.com/questions/26731198/swift-segmentation-fault-when-compiling-for-archive-from-ios-7 – Cole
請提供更多詳細信息 –