branch10480’s blog

Topics that I've learned.

iOSアプリ開発自動テストの教科書 を読んでいく 〜 11 〜

独自のアサーションの作成

まずは不十分な実装を示す。

func asertEmpty(_ string: String) {
    // [A]
    XCTAssertTrue(string.isEmpty, "\"\(string)\" is not empty.")
}

呼び出し部はこう。

func testAssertEmpty() {
    // [B]
    assertEmpty("test")
}

これを実行すると、エラーになった行が[A]としてログに出てしまう。(本当は呼び出し側の[B]が出て欲しいのに。。)

こうならないためにはこのように修正する。

func assertEmpty(_ string: String, file: StaticString = #file, line: UInt = #line) {
    XCTAssertTrue(string.isEmpty, "\"\(string)\" is not empty.", file: file, line: line)
}

#file#lineは現在のファイルと行を表すマクロである。デフォルト引数とすることで呼び出し側の情報がそれぞれ格納される。

XCTestのライフサイクルを知る(setUp / tearDown)

Class method or Instance method のどちらになるのかに注意する。

f:id:branch10480:20210118194607p:plain

参考
https://developer.apple.com/documentation/xctest/xctestcase/understanding_setup_and_teardown_for_test_methods

> 次回に続く