はじめに
iOSのテストフレームワークはParameterized Testをサポートしていません。その制約を回避するために世の中にはいろいろな手法が提示されていますが、そのほとんどは設定や実装が面倒です。
そこで、私が実務を実践している、XCTContextを使ってお手軽に行う方法を披露したいと思います。
実現方法。
たったこんだけ。テスト結果にはちゃんとパラメータ毎のテスト結果がレポートされます。
func test_hogehoge() {
for (name, expectedResult) in ["テスト1": 1, "テスト2": 2, "テスト3": 3] {
XCTContext.runActivity(named: name) { activity in
...
XCTAssertEqual(result, expectedResult)
}
}
}
さらに
パラメータ定義〜テスト実行部分をクロージャにとるメソッドとして実装すれば、もっと簡潔に重複を減らす形で実装できると思います。