Sansanさんで開催された関モバに参加してきました。
今回はSwiftの単体テストフレームワーク、Swift Testingについて話しました。
XCTestも悪いフレームワークではないのですが、より優れたものが出たということで、移行していきたいですね。修正は必要なものの基本的には移行しやすくて良い感じだと思います。
テストしたい値が複数あるときに、XCTestでは自前で for
ループなどで各種パターンのテストを実行しなければならなかったのが、Swift Testingでは arguments
指定でテスト関数の外側から渡せるのは良いなと思います。なお、スライドでは書けませんでしたが、Xcode 16でUIも見やすくなっています。
ただ、非同期処理のテストは注意が必要かと思いました。XCTestの expectation
とSwift Testingの confirmation
はちょっと勝手が違います。一応 Task.megaYield
という逃げ道はあるのですが、あんまり使いたくはないですね。おそらくは withCheckedContinuation
を使うのが妥当そうです。テストコードが少しややこしくなるので、複雑な場合も本当に大丈夫かはまだ自信を持って言えませんが。
今回の発表に対して、いくつも質問をいただけて良かったです。こちらも勉強になるのでとても嬉しいです。また、Swift Testingや単体テストに興味を持っている人が多いことも改めて感じました。
関モバはあと1回くらい年内に開催されそうなので、次回も期待しています。