iT邦幫忙

2023 iThome 鐵人賽

DAY 25
0
Mobile Development

在 iOS 專案上加上 Unit testing - 因為 You need testing系列 第 25

D25 - 在 iOS 專案加上測試-You need testing {測試 SwiftUI 的 View}

  • 分享至 

  • xImage
  •  

前面的文章,都沒有提到 UI 元件的 Unit testing。請注意這裡指的是 Unit testing,並非 UI testing。這個專案使用了 SwiftUI 的界面,在找了相關測試的資源後,決定使用 ViewInspector 進行 SwiftUI View 的測試。

ViewInspector Repo

https://github.com/nalexn/ViewInspector

ViewInspector 的導入 - 使用 SPM

step1: 用 spm 導入

https://ithelp.ithome.com.tw/upload/images/20231006/20140622g6fXCbF1Ni.png
記得加到 Tests target,不然會 build failed

https://ithelp.ithome.com.tw/upload/images/20231006/2014062208aFklFne5.png

step2: 開一個 MemoInputView.swift 的 SwiftUI View 檔案

import SwiftUI

struct MemoInputView: View {
    var body: some View {
        Text("Hello world")
    }
}

struct MemoInputView_Previews: PreviewProvider {
    static var previews: some View {
        MemoInputView()
    }
}

step3: 開 MemoInputViewTests 的測試

step4: 在 test 中引入 ViewInspector

import XCTest
@testable import TwStockTools
import ViewInspector

final class MemoInputViewTests: XCTestCase {

    override func setUpWithError() throws {
        
    }

    override func tearDownWithError() throws {
        
    }
}

step5: 測試

func testMemoInputViewStart() throws {
        
        let expect = "Hello World"
        let string = try sut.inspect().text().string()
        
        XCTAssertEqual(expect, string)
    }

ViewInspector 可以讓你快速的測試 SwiftUI View 上的元件

這一篇是單純的測一個 Text,下一篇會測一個 @State 的 property


上一篇
D24 - 在 iOS 專案加上測試-You need testing {在 Test 啟動階段,換上測試用的 AppDelegate 適用於 UIKit 專案}
下一篇
D26 - 在 iOS 專案加上測試-You need testing {測試 SwiftUI 的 View 的 State Value}
系列文
在 iOS 專案上加上 Unit testing - 因為 You need testing32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言