今天的內容是為我們前面的專案加上測試,採用Apple本身的測試框架,並撰寫一些基本的測試。
現在,我們馬上開始!
如果我們建立專案的時候,有勾選『Include Unit Tests』,則可以跳過這些步驟。
此方法會在第一個測試之前執行,可以用來初始化一些設定
override func setUp() {
// Put setup code here. This method is called before the invocation of each test method in the class.
}
此方法會在最後一個測試後執行,可以寫一些釋放物件的程式碼
override func tearDown() {
// Put teardown code here. This method is called
after the invocation of each test method in the
class.
}
此為測試方法的範本,一般我們的測試方法都為void方法
func testExample() {
// This is an example of a functional test case.
// Use XCTAssert and related functions to verify
your tests produce the correct results.
}
此為效能測試的一個簡單例子
func testPerformanceExample() {
// This is an example of a performance test case.
measure {
// Put the code you want to measure the time of
here.
}
}
透過前面的測試,我們已經初步跑過測試了。
現在,我們要開始來撰寫單元測試。
由於我們沒有做效能測試,testPerformanceExample()直接刪除
測試之前,我們先import來加入Model
@testable import ToDoList
func testToDoListStart() {
// given
let category = "work"
let status = "\(Status.ongoing)"
// when
let todoList = ToDoList()
// then
XCTAssertEqual(category, todoList.category)
XCTAssertTrue(status == todoList.status)
XCTAssertNil(todoList.endTime)
}
由於目前的種類只有『work』,不會有其他case
ToDoList清單在啟動時,預設的狀態為『ongoing』
ToDoList啟動時,尚未有完成時間,因此為『nil』
如果測試要寫的完整,有許多地方需要搭配protocol的協助
本文僅列出部分測試代碼,其餘部分請參考GitHub
執行測試:
『cmd + U』
顯示測試導覽
『cmd + 6』
編譯測試
『cmd + shift + U』
不編譯直接測試
『ctrl + cmd + U』
執行當前測試
『ctrl + cmd + alt + U』
執行前一次的最後測試
『ctrl + cmd + alt + G』
今天我們練習了執行專案的單元測試,也實際撰寫了簡單的幾個測試,由於作者並沒有許多iOS App開發經驗(學習中)。因此,撰寫的測試比較簡單。
而本次的內容參考了許多網路資料,也參考了『TDD Fake Book for iOS』- Dominik Hauser 這一本電子書,由於時間關係,作者尚未完整的拜讀完畢整本書籍,有興趣的讀者可以參考(ref4)的連結。此為付費的電子書。
今天的內容就到這邊,感謝讀者們的閱讀。
https://github.com/chiron-wang/IT30_11
深入淺出 iPhone 開發 (使用 Swift4) - WeiWei
https://www.udemy.com/course/iphone-swift4/
iOS 12 App 開發快速入門與實戰(繁體中文)
https://www.udemy.com/course/ios-12-app/
心智圖軟體Xmind
https://www.xmind.net/
[Unit Test]
tddfakebookforios
https://leanpub.com/tddfakebookforios
iOS Unit Testing and UI Testing Tutorial
https://www.raywenderlich.com/960290-ios-unit-testing-and-ui-testing-tutorial
Swift的UITest和UnitTest怎麼寫?
https://medium.com/@lihsinplayer/swift%E7%9A%84uitest%E5%92%8Cunittest%E6%80%8E%E9%BA%BC%E5%AF%AB-5758fda2c2e0
swiftbysundell Unit Testing
https://www.swiftbysundell.com/basics/unit-testing/
Swift 開發:如何使用 Xcode 7 進行單元測試
https://www.appcoda.com.tw/unit-testing-swift/
初探 iOS 的單元測試(Unit Test)
https://ios.devdon.com/archives/775
Unit Testing Model View Controller on iOS with Swift
https://medium.com/@ali.aga_2866/unit-testing-model-view-controller-on-ios-with-swift-c010c132292d
Unit-Testing a ViewController
https://priteshrnandgaonkar.github.io/Unit-Testing-a-feature/