Xcode:為你的項(xiàng)目集成單元測試(unit tests)時(shí)記得避開這些坑

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

  • 創(chuàng)建項(xiàng)目時(shí)記得勾選『include Unit Tests』



    在項(xiàng)目創(chuàng)建時(shí)如果直接選擇了包含單元測試是最方便的了。xcode7中的UI自動測試已經(jīng)很完善,建議『include UI Tests』也一起選上。

  • 已有項(xiàng)目,可以通過添加target的方式添加


選擇iOS Unit Testing Bundle


在Test分類下選擇
  • 添加測試文件
    在單元測試項(xiàng)目下,新建文件,選擇source下的Unit Test Case Class。
    tips:如果幾個(gè)test case都有一些共同的數(shù)據(jù)或邏輯,可以自己新建一個(gè)test case的基類,然后每個(gè)分別繼承
  • 將要測試的module導(dǎo)入到test case中
    import完你需要測試的項(xiàng)目名稱后,就可以在這個(gè)類里歡快的調(diào)用里面的類了
    <pre><code>@testable import YQImageCompress
    </code></pre>

使用cocoapods的同學(xué)注意了

在import完后很可能你的swift『Bridging-Header.h』橋接文件會報(bào)如下的錯(cuò):
<pre>failed to import bridging header</pre>
或者
<pre>SDWebImage/UIImageView+WebCache.h File Not Found Error</pre>
可能你不愿接受這個(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)目配置必須重新配置一遍

在編輯區(qū)中選擇Tests項(xiàng)目,在build setting中配置

因?yàn)閟wift的橋接文件很可能在你第一次創(chuàng)建swift類時(shí)xcode自動幫你配置了項(xiàng)目,你可能沒有意識到build setting其實(shí)已經(jīng)更改了。
可以參照著自己項(xiàng)目的配置來重新配置一次。

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

cocoapods同理,其實(shí)已經(jīng)默認(rèn)幫你配置了不少search paths,自己手動貼進(jìn)去吧,主要是下面這幾個(gè)選項(xiàng)


還差最后一步:Enable Testability

一切類都配置到項(xiàng)目后又出現(xiàn)了這個(gè)錯(cuò)誤:

'Module was not compiled for testing'

在原來的項(xiàng)目里配置Enable Testability為Yes


現(xiàn)在你就真的可以愉快的在test case中快活的測試任意一個(gè)項(xiàng)目中的類了

相關(guān)鏈接:
http://stackoverflow.com/questions/30787674/module-was-not-compiled-for-testing-when-using-testable

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容