前面的文章,都沒有提到 UI 元件的 Unit testing。請注意這裡指的是 Unit testing,並非 UI testing。這個專案使用了 SwiftUI 的界面,在找了相關測試的資源後,決定使用 ViewInspector 進行 SwiftUI View 的測試。
https://github.com/nalexn/ViewInspector
step1: 用 spm 導入
記得加到 Tests target,不然會 build failed
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