如何進行 iOS 單元測試(Unit Test) ? 使用 XCode 創建單元測試案例

 XCode 內建了 Unit Test、UI Test、Code Coverage、Performance 等框架

本篇主要聚焦在如何進行 iOS 單元測試(Unit Test) ,使用 XCode 創建單元測試案例

測試用的程式代碼與教程文件,都在下方連結中。


程式

文件 

目錄

  • 創建單元測試模板
  • 建立單元測試案例
  • 單元測試結果

創建單元測試模板

新增單元測試模板

選擇模板

新產生的檔案夾

範例代碼


建立單元測試案例

測試案例

  • AppInfo
  • AppInfoService


AppInfo

class AppInfo{
    var name : String
    var version : String
    var date : String
    var author : String
    var remark : String

    init (name : String , version : String , date : String , author : String , remark : String){
        self.name = name
        self.version = version
        self.date = date
        self.author = author
        self.remark = remark
    }
    convenience init(){
        self.init(name: "" , version: "" , date: "" , author: "" , remark: "")
    }
}

AppInfoService

class AppInfoService{

    var appInfo = AppInfo(name: "iOSProjSE" , version: "v1.0.1" , date: "2020-10-09" , author: "Enoxs" , remark: "iOS App : Tutor")

    func getAppInfo() -> AppInfo{
        return appInfo
    }
}

單元測試範例

  • AppInfoServiceTest

AppInfoServiceTest

import Foundation
import XCTest
@testable import iOSProjSE
class AppInfoServiceTest : XCTestCase{
    var service = AppInfoService()
    func testGetAppInfo01(){
        let appInfo = service.getAppInfo()
        XCTAssertEqual("iOSProjSE", appInfo.name)
    }
    func testGetAppInfo02(){
        let appInfo = service.getAppInfo()
        XCTAssertEqual("v1.0.2", appInfo.version)
    }
}
  • import XCTest : 單元測試庫
  • class AppInfoServiceTest : XCTestCase{ : 繼承 XCTestCase
  • @testable import iOSProjSE : 導入要測試的模組
  • func testGetAppInfo() : 單元測試函式,必須以 test 前綴開頭,否則不會被觸發
  • XCTAssertEqual("iOSProjSE", appInfo.name) : 測試案例斷言

單元測試結果

執行測試

  • 快捷鍵 : command + U

測試結果


  • 側邊欄 : [Show the test Navigator] -> 全部測試狀態
  • 綠色 : 測試通過
  • 紅色 : 測試失敗

參考資料

使用 Xcode 的 Unit Tests、UI Tests、Code Coverage、Performance 等 Frameworks 執行單元測試和查看數據

https://medium.com/@mikru168/ios-unittests-%E4%BD%BF%E7%94%A8%E5%85%A7%E5%BB%BA%E7%9A%84framework%E9%80%B2%E8%A1%8C%E5%96%AE%E5%85%83%E6%B8%AC%E8%A9%A6-5e58b3e318fd

初探 iOS 的單元測試(Unit Test)

https://ios.devdon.com/archives/775

留言

熱門文章

Markdown 語法大全,範例模板

【如何寫乾淨的程式碼 ? 】程式設計 代碼風格 指南 | 基礎 + 9 個進階概念

【 git 基礎教程 #1】什麼是 git ? | Sourcetree 介紹 與 入門基礎操作教學

【什麼是 git flow ?】 5 項分支全詳解 | Sourcetree 實戰演練