独自のアサーションの作成
まずは不十分な実装を示す。
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 のどちらになるのかに注意する。