XCTAssertを利用しているとforced unwarpしたい場面が出てくる。例えば、

class Foo {
    var title: String?
}

というプロパティのテストを書く場合に

if let title = foo.title {
    XCTAssertEqual(title, "title")
} else {
    XCTFail()
}

と書くのがだるくて

XCTAssertEqual(foo.title!, "title")

と書いてしまうといった具合に。 forced unwarpしている理由はfoo.title"title"の型(Optional<String>String)を合わせるためで、 それはXCTAssertEqualのインターフェースが以下のようになっており、それぞれの型が一致している必要があるというところから来ている。

func XCTAssertEqual<T : Equatable>(expression1: T, expression2: T) // ちょっと省略して書いた

しかし、この書き方には問題があり、foo.titleがnilの場合にテストの実行自体が止まってしまう。そこで、

XCTAssert(foo.title == "title")

と書けば、Optionalがnilだった場合にもテストの実行を止めず、かつ値もきちんと検証することができるということがわかった。 こういった書き方を補助するライブラリとしてantitypical/Assertionsというものもあるが、 よくわからない場合はXCTAssertでも良さそう。