WWDC2018でテストに関する新機能が発表されました!
時差ボケで寝れないので現地からこの記事を書いてます:)
What's New in Testing
Parallel Testing
Xcode10から、単一のdestinationで並列にテストを実行させることができるようになりました。
Xcode9では複数のdestinationでテストを同時実行させるできましたが、複数のdestinationが必要なケースでしか効果を得られませんでした。
Xcode10では、並列にテストクラスが実行されます。したがってテストクラスが多く、テスト実行時間が長かったプロジェクトほどその恩恵を受けられるでしょう。↓
・今まで
start -> ATests (3秒) -> BTests (4秒) -> CTests (5秒) -> finish (12秒)
・Parallel Testing
|-> ATests (3秒)
start -+-> BTests (4秒) -> finish (5秒)
|-> CTests (5秒)
テスト実行時間が単純に短縮されるので最高の機能です。
※ 並列化の台数は環境によって最適化したほうが良さそうです。
Test Ordering
もうひとつ、実行順序についてです。
defaultはAlphabet順ですが、オプションでrandomizedを選択できるようになりました。
並列化もそうですが、実行順序をランダムにすることで、実行順に依存してしまっているテストを発見することができます。
テストは基本的に疎である方が安全なので、これも素晴らしい機能です。
Tips&Tricks
ひとつのテストクラスの実行時間が、全体の実行時間に対して支配的な場合は、
そのテストクラスを分割することで、全体の実行時間を短縮することができる、といったTipsも紹介されていました。
詳しいTips&Tricksは金曜に別のセッションがあるようなので、その内容も後日追記したいと思います。
感想
テストの並列化はXcode10の目玉機能だと思います。
これによって世界で何時間分のテスト実行時間が短縮されるかと思うとすごいですね!w