背景:項(xiàng)目已經(jīng)創(chuàng)建大約兩年,編程語言是常見的 OC,項(xiàng)目里用到了cocoapods,也用到了Swift,現(xiàn)在單元測試打算用 Swift 語言(OC被拋棄只是時(shí)間問題)。
創(chuàng)建項(xiàng)目時(shí)記得勾選『include Unit Tests』

1448355481913832.png
在項(xiàng)目創(chuàng)建時(shí)如果直接選擇了包含單元測試是最方便的了。Xcode7 中的 UI 自動(dòng)測試已經(jīng)很完善,建議『include UI Tests』也一起選上。
已有項(xiàng)目,可以通過添加 target 的方式添加

1448355504907178.png
選擇 iOS Unit Testing Bundle

1448355510545176.png
在 Test 分類下選擇
添加測試文件
在單元測試項(xiàng)目下,新建文件,選擇 source 下的 Unit Test Case Class。
tips:如果幾個(gè)test case都有一些共同的數(shù)據(jù)或邏輯,可以自己新建一個(gè) test case 的基類,然后每個(gè)分別繼承.

1448355547421668.png
將要測試的 module 導(dǎo)入到 test case 中
import 完你需要測試的項(xiàng)目名稱后,就可以在這個(gè)類里歡快的調(diào)用里面的類了。
1
@testable import YQImageCompress

1448355601449094.png
使用 cocoapods 的同學(xué)注意了
在 import 完后很可能你的 swift『Bridging-Header.h』橋接文件會(huì)報(bào)如下的錯(cuò):
failed to import bridging header 或者 SDWebImage/UIImageView+WebCache.h File Not Found Error
可能你不愿接受這個(gè)現(xiàn)實(shí),clean了項(xiàng)目,重新build,或者重啟了計(jì)算機(jī)。在模擬器中運(yùn)行你的項(xiàng)目時(shí)心里默念:剛才還是好好的啊,明明能正常運(yùn)行,為什么有錯(cuò)誤!
是的。為此我已經(jīng)抓掉了不少頭發(fā)。
原因是:unit tests 是個(gè)單獨(dú)的項(xiàng)目,所以一些項(xiàng)目配置必須重新配置一遍

1448355665601747.png
在編輯區(qū)中選擇 Tests 項(xiàng)目,在 build setting 中配置
因?yàn)镾wift的橋接文件很可能在你第一次創(chuàng)建 Swift 類時(shí) Xcode 自動(dòng)幫你配置了項(xiàng)目,你可能沒有意識(shí)到 build setting 其實(shí)已經(jīng)更改了。
可以參照著自己項(xiàng)目的配置來重新配置一次。

1448355687678423.png
可以參考這個(gè)鏈接下的回答:http://stackoverflow.com/questions/26116288/failed-to-import-bridging-header
cocoapods 同理,其實(shí)已經(jīng)默認(rèn)幫你配置了不少 search paths,自己手動(dòng)貼進(jìn)去吧,主要是下面這幾個(gè)選項(xiàng).

1448355707798236.png
還差最后一步:Enable Testability
一切類都配置到項(xiàng)目后又出現(xiàn)了這個(gè)錯(cuò)誤:
'Module was not compiled for testing'
在原來的項(xiàng)目里配置 Enable Testability 為 Yes

1448355725191419.png
現(xiàn)在你就真的可以愉快的在 test case 中快活的測試任意一個(gè)項(xiàng)目中的類了
相關(guān)鏈接:'Module was not compiled for testing' when using @testable