【iOS】FastlaneでUnitTest/UITestをいい感じに自動化してみた
はじめに
Fastlaneをプロジェクトに導入をする機会があって、いろいろ調べたので記事にしてみました。
Fastlaneをこれから使ってみたい、XCTestを自動化したいという方の参考になれば幸いです。
この記事で学べること
- Fastalenの導入の方法
- XCTest(UnitTest/UITest)を自動化する方法(前提としてプロジェクトにXCTestが導入されている必要がある)
- Test自動化のための細かいオプション
Fastalen導入
Test自動化の前にFastlaneをプロジェクトに導入する必要があります。
プロジェクトのディレクトリに移動して、
bundle init
を実行すると、同ディレクトリにGemfile
が生成されます。
Gemfile
をテキストエディタなどで開いて、コメントアウトされている# gem "rails"
の下に、
gem 'fastlane'
を書き足します。
ここまでは、エラーが起きて失敗したりすることはあまり無いと思います(自分は大丈夫でした)
次はインストールです。
bundle install --path vendor/bundle
このコマンドが結構厄介で、環境によっては権限周りのエラーを吐きます。
PCによって大丈夫だったり、ダメだったり色々です。とりあえず、エラーで検索すれば、解決できました。
ここまできたら次は、Fastalen導入です。
bundle exec fastlane init
1 - 4 の選択肢を提示されて、選ばされますが、どちらにせよ後で編集できるので、4番を選択します。
なんか色々聞かれますが、Enterですべてすっ飛ばします。
このコマンドが成功するとディレクトリにfastlane
というファイルが作られます。
その中に、Fastfile
、Appfile
があるはずです。← 今回はこれ使いません。
XCTestの自動化
とりあえず、Fastlaneの導入が終わりましたので、こっから自動化する作業に入ります。
Scanfileを生成する
bundle exec fastlane scan init
とりあえずTest実行してみる
Scanfile
が作られたら、とりあえず中身を何も変更しないデフォルトでも自動テストが動きます。
bundle exec fastlane scan
これだけです。
UnitTestとUITestがプロジェクトに両方ある場合は、両方とも自動で実行されます。
ターミナルでテストが完了したことを確認し、
/fastlane/test_output
のディレクトリにreport.html
が出力されていればテスト完了です。
テストの結果はこのHTMLファイルから確認できます。
プロジェクトにある全てのTestをとりあえず回したいという場合はここまででOKです。
Scanfileを使ってもっと便利にしてみる
デフォルトでもXCTest自動化という目的は達成ですが、せっかくScanfileを生成したので、もう少しカスタムしていきたいと思います。
自分が使ってみて便利だったカスタムは以下に記載しました。
devices(["iPhone 8"])
open_report(true)
clean(true)
only_testing(["Switf5UITestTrainUITests/Switf5UITestTrainUITests/testLogin"])
# skip_testing(["Switf5UITestTrainUITests/Switf5UITestTrainUITests/testLogin"])
key | value | type |
---|---|---|
devices | テストを実行する端末を配列で指定可能 | [String] |
open_report | テスト完了後にhtmlを開くかどうか 終わったタイミングが分かるので良い |
Bool / default = false |
clean | clean build するかどうか | Bool / default = false |
only_testing | 実行したいテストを1メソッド〜指定可能 フォルダ名/ファイル名/メソッド名 を配列で指定可能 めちゃ使える |
[String] |
skip_testing | スキップしたいテストを1メソッド〜指定可能 フォルダ名/ファイル名/メソッド名 を配列で指定可能 |
[String] |
パラメーターの仕様をもっと知りたい方はこちらのドキュメントに記載されているので読んでみてください。
参考にさせていただいた記事
Author And Source
この問題について(【iOS】FastlaneでUnitTest/UITestをいい感じに自動化してみた), 我々は、より多くの情報をここで見つけました https://qiita.com/ctnc_67/items/e5e0bae431b3025f4255著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .