背景:項目已經創建大約兩年,編程語言是常見的 OC,項目裡用到了cocoapods,也用到了Swift,現在單元測試打算用 Swift 語言(OC被拋棄只是時間問題)。
創建項目時記得勾選『include Unit Tests』
在項目創建時如果直接選擇了包含單元測試是最方便的了。Xcode7 中的 UI 自動測試已經很完善,建議『include UI Tests』也一起選上。
已有項目,可以通過添加 target 的方式添加
選擇 iOS Unit Testing Bundle
在 Test 分類下選擇
添加測試文件
在單元測試項目下,新建文件,選擇 source 下的 Unit Test Case Class。
tips:如果幾個test case都有一些共同的數據或邏輯,可以自己新建一個 test case 的基類,然後每個分別繼承.
將要測試的 module 導入到 test case 中
import 完你需要測試的項目名稱後,就可以在這個類裡歡快的調用裡面的類了。
@testable import YQImageCompress
使用 cocoapods 的同學注意了
在 import 完後很可能你的 swift『Bridging-Header.h』橋接文件會報如下的錯:
failed to import bridging header 或者 SDWebImage/UIImageView+WebCache.h File Not Found Error
可能你不願接受這個現實,clean了項目,重新build,或者重啟了計算機。在模擬器中運行你的項目時心裡默念:剛才還是好好的啊,明明能正常運行,為什麼有錯誤!
是的。為此我已經抓掉了不少頭發。
原因是:unit tests 是個單獨的項目,所以一些項目配置必須重新配置一遍
在編輯區中選擇 Tests 項目,在 build setting 中配置
因為Swift的橋接文件很可能在你第一次創建 Swift 類時 Xcode 自動幫你配置了項目,你可能沒有意識到 build setting 其實已經更改了。
可以參照著自己項目的配置來重新配置一次。
可以參考這個鏈接下的回答:http://stackoverflow.com/questions/26116288/failed-to-import-bridging-header
cocoapods 同理,其實已經默認幫你配置了不少 search paths,自己手動貼進去吧,主要是下面這幾個選項.
還差最後一步:Enable Testability
一切類都配置到項目後又出現了這個錯誤:
'Module was not compiled for testing'
在原來的項目裡配置 Enable Testability 為 Yes
現在你就真的可以愉快的在 test case 中快活的測試任意一個項目中的類了
相關鏈接:'Module was not compiled for testing' when using @testable