成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iOS9每天多了解一點5:Xcode Code Coverage Tools

移動開發
Code coverage 是一個計算你的單元測試覆蓋率的工具。高水平的覆蓋給你的單元測試帶來信心,也表明你的應用被徹底的測試過了。你可能寫了幾千個單元測試,但如果覆蓋率不高,那么你寫的這套測試可能價值也不大。

[[144518]]

Code coverage 是一個計算你的單元測試覆蓋率的工具。高水平的覆蓋給你的單元測試帶來信心,也表明你的應用被徹底的測試過了。你可能寫了幾千個單元測試,但如果覆蓋率不高,那么你寫的這套測試可能價值也不大。

這里并沒有一個確切的百分比,要求你必須到達這個覆蓋率。這很大程度上取決于你的項目(的具體情況)。譬如說,如果你的項目中有很多不能寫單元測試的視覺組件,那么覆蓋率就會比單純處理數據的框架要低的多。

Code Coverage in Xcode

在過去,如果你想要制作一個測試的代碼覆蓋報告出來,需要設置很多[選項]。非常復雜,還有許多需要手動設置。在 iOS 9中,蘋果提供了智能的代碼覆蓋工具,他是和 LLVM 一體的,每次運行測試都會被調用和計算。

Using the Code Coverage Tools

現在我們用一個例子來展示,如何使用新的 code coverage 工具和怎樣提升現在的測試用例。完成后的代碼放在了 Github 上,你可以跟著做。

***件事是創建一個新項目,并確認你選上了Unit tests選項。這會按要求創建一個默認項目,現我們需要測試點什么。這個測試可能是你的任意需求,這里我添加一個空的 swift 文件,里面寫好了一個全局的方法。這個方法檢測兩個字母串是否是僅排序不同的相同字母組成的詞。寫成全局的方法,可能不是好的設計,但這里我們僅演示一下。

這是一個相對簡單的方法,所以我們可能會得到一個沒有任何問題的,100%覆蓋的測試覆蓋率。

check word

 

一旦你寫好了算法,就該寫個測試了。打開項目創建時已經創建好了的默認的XCTestCase,添加一個下面的簡單的測試方法。他看起來是這樣子的。

tests

 

在運行測試之前,我們必須先確認 code coverage 是否被打開了,寫代碼時,默認是關閉的。所以你需要編輯一下你的測試 scheme,把它打開。

turn on coverage

 

確保"Gather coverage data"是被選中的,然后點擊關閉按鈕,運行測試的 target. 我們希望剛剛創建的測試用例能夠順利通過。

The Coverage Tab

一旦這個測試通過了,你就能知道 checkWord 這個方法,至少有一條路徑是對的。但你不知道的是,還多多少沒有被測試到。這就是code coverage這個工具的好處。當你打開code coverage tab后,你可以清楚的看到測試的覆蓋情況。他們按找 target, file, function 進行了自動分組。

打開Xcode左邊窗口的Report Navigator面板,選中你剛運行的測試。然后在tab中選中 Coverage。

test coverage panel

 

這會展示一個你的類、方法的列表,并標示出每個的測試覆蓋率。如果你將鼠標懸停在checkWord這個方法上,你可以看到測試的覆蓋率是28%。不能接受啊!我們需要找到,那些代碼分支是能夠被測試執行,那些是不能的,進而改善他們。雙擊方法的名字,Xcode會打開類的代碼,并且看到code coverage的情況。

coverage result

 

白色的區域表示這些代碼時測試覆蓋過的。灰色區域時測試無法覆蓋的,我們需要添加更多的測試用例來覆蓋灰色部分的代碼。在右手邊的數字,表明這些代碼塊,在這次測試中被執行的次數。

Improving Coverage

很顯然,28%的覆蓋率不是我們的目標。這里沒有 UI,看起來是個***的編寫測試用例的候選function。所以,我們添加一個測試用例。理想情況下,我們希望每個分支都能被測試到。這樣就能達到完整的覆蓋。添加下面的測試用例到你的測試類中。

test cases

 

這些測試用例應該能夠完全覆蓋我們的代碼了。運行一下單元,然后打開***一個測試報告。

the final coverage result

 

我們成功了,100%的覆蓋率。你可以看到整個代碼都變成了白色,右面的數字也展示了每個代碼段至少被執行了一次。

使用code coverage是一個非常棒的方式,幫你建立真正有價值的測試組合。遠好于你寫了很多測試用例,但沒有真正測試到代碼。Xcode 7 讓這種方式變的非常簡單,我推薦你在項目中開啟 Code Coverage。即使你已經寫好了測試,也可以幫你知道到底測試寫的怎么樣。

延伸閱讀

更多關于Xcode 7 中 Code Coverage 工具的內容,我推薦你觀看 WWDC 2015 的session 410 Continuous Integration and Code Coverage in Xcode.***,別忘了如果你想要試試我們上面的例子,可以在 Github 中找到他。

責任編輯:倪明 來源: Shinobi Controls
相關推薦

2015-08-03 10:03:09

iosuistack vie

2015-07-27 09:04:33

ios9

2015-07-21 16:43:13

IOSUI

2015-07-17 11:12:43

IOS搜索API

2021-06-02 18:46:13

監控日志Prometheus

2011-03-15 10:41:05

內部類

2015-10-16 14:27:29

iOS9collectionV特性

2015-07-16 12:59:19

IOS9UIDynamics

2015-07-02 17:32:28

iOS 9蘋果

2015-08-20 09:00:23

ios9api

2015-08-24 09:24:21

ios學習contacts fr

2015-09-25 09:44:24

ios9MapkitTrans

2015-09-16 09:55:12

ios9學習UIKit Dynam

2015-08-07 09:06:50

ios9更新

2015-09-22 10:15:19

CocosXcode 7iOS9

2021-05-20 09:11:00

5G5G網絡5G終端

2016-03-18 11:19:57

ios9replaykit入門

2019-04-16 15:05:59

ServerlessIT基礎局域網

2015-08-31 11:10:52

ios9內容攔截器

2015-09-09 15:51:54

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲一级毛片 | 日韩在线免费看 | 久久久久国产一区二区三区 | 三级视频国产 | 国产a视频 | 精品国产欧美一区二区三区不卡 | 99久久精品国产麻豆演员表 | 久久精品国产久精国产 | 国产视频1区2区 | 看片网站在线 | 成人欧美一区二区三区黑人孕妇 | 亚洲欧美日韩久久 | 亚洲二区精品 | 亚洲精品电影 | 妞干网福利视频 | 综合久久亚洲 | 天天干天天爱天天爽 | 亚洲激情自拍偷拍 | 精品中文字幕一区二区 | 亚洲精品久久久久久国产精华液 | 一区二区在线不卡 | 国产精品免费一区二区三区四区 | 日韩免费福利视频 | 免费黄色片在线观看 | 99久久免费观看 | 日本欧美在线 | 黄网站在线播放 | 日韩一区二区在线视频 | 国产精品日本一区二区在线播放 | 久久精品免费 | 国产精品久久久久久婷婷天堂 | 国产精品观看 | 久久成人免费 | 亚洲国产69| 日本免费视频在线观看 | 欧美一区二 | 日韩在线| 视频一区中文字幕 | 久久久久久国产精品 | 福利片在线观看 | 久久久国产一区二区三区 |