你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發基礎 >> Xcode:為你的項目集成單元測試時記得避開這些坑

Xcode:為你的項目集成單元測試時記得避開這些坑

編輯:IOS開發基礎

背景:項目已經創建大約兩年,編程語言是常見的 OC,項目裡用到了cocoapods,也用到了Swift,現在單元測試打算用 Swift 語言(OC被拋棄只是時間問題)。

  • 創建項目時記得勾選『include Unit Tests』

011.png

在項目創建時如果直接選擇了包含單元測試是最方便的了。Xcode7 中的 UI 自動測試已經很完善,建議『include UI Tests』也一起選上。

  • 已有項目,可以通過添加 target 的方式添加

012.png

選擇 iOS Unit Testing Bundle

013.png

在 Test 分類下選擇

  • 添加測試文件

在單元測試項目下,新建文件,選擇 source 下的 Unit Test Case Class。

tips:如果幾個test case都有一些共同的數據或邏輯,可以自己新建一個 test case 的基類,然後每個分別繼承.

014.png

  • 將要測試的 module 導入到 test case 中

import 完你需要測試的項目名稱後,就可以在這個類裡歡快的調用裡面的類了。

@testable import YQImageCompress

015.png

使用 cocoapods 的同學注意了

在 import 完後很可能你的 swift『Bridging-Header.h』橋接文件會報如下的錯:

failed to import bridging header 或者 SDWebImage/UIImageView+WebCache.h File Not Found Error

可能你不願接受這個現實,clean了項目,重新build,或者重啟了計算機。在模擬器中運行你的項目時心裡默念:剛才還是好好的啊,明明能正常運行,為什麼有錯誤!

是的。為此我已經抓掉了不少頭發。

原因是:unit tests 是個單獨的項目,所以一些項目配置必須重新配置一遍

016.png

在編輯區中選擇 Tests 項目,在 build setting 中配置

因為Swift的橋接文件很可能在你第一次創建 Swift 類時 Xcode 自動幫你配置了項目,你可能沒有意識到 build setting 其實已經更改了。

可以參照著自己項目的配置來重新配置一次。

017.png

可以參考這個鏈接下的回答:http://stackoverflow.com/questions/26116288/failed-to-import-bridging-header

cocoapods 同理,其實已經默認幫你配置了不少 search paths,自己手動貼進去吧,主要是下面這幾個選項.

018.png

還差最後一步:Enable Testability

一切類都配置到項目後又出現了這個錯誤:

'Module was not compiled for testing'

在原來的項目裡配置 Enable Testability 為 Yes

019.png

現在你就真的可以愉快的在 test case 中快活的測試任意一個項目中的類了

相關鏈接:'Module was not compiled for testing' when using @testable

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved