【Xcode/Fastlane】テストの自動化方法!run_testsアクションの使い方
この記事からわかること
- iOS/Xcodeの自動化ツール:Fastlaneの使い方
- テストを自動化する方法
- run_testsアクションとは?
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
環境
- Xcode:15.0.1
- watchOS:10.0
- Swift:5.9
- macOS:Sonoma 14.1
- fastlane:2.221.0
Xcode/iOSアプリでFastlaneを使用してテストを自動化する方法をまとめていきます。導入やセットアップの方法は以下の記事を参考にしてください。
Fastlaneでテストを実行する方法
公式リファレンス:fastlaneを使用してiOSテストを実行する
Fastlaneを使用してテストを実行するためにはXcodeのプロジェクトにテストを導入している必要があります。プロジェクト作成時に「Include Tests」にチェックを入れておけばOKです。
必要なテストの実装方法などを上記の記事を参考にしてテストを用意しておいてください。
Fastfileファイルを編集
Fastlaneでテストを実行するには「Fastfile」ファイルを編集します。最初に自動生成されたものは以下のようになっています。
default_platform(:ios)
platform :ios do
desc "Description of what the lane does"
lane :custom_lane do
# add actions here: https://docs.fastlane.tools/actions
end
end
ここに新しくテスト用のレーンを追加します。元々あったcustom_lane
を消してtests
レーンを追加しました。desc
はレーンの説明を記述するブロックです。
default_platform(:ios)
platform :ios do
desc "テスト"
lane :tests do
run_tests(scheme: "プロジェクト名")
end
end
FastlaneでユニットテストまたはUIテストを実行するにはrun_tests
アクションを使用します。パラメータには様々なオプションや設定値を渡すことができるようになっていますが、単に動作させたいだけであればscheme
にプロジェクト名を渡せばOKです。
テストの実行
テスト(レーン)を実行するためにはfastlane レーン名
を実行します。bundler
を使用している場合はbundle exec
の後にfastlane レーン名
を付与したコマンドになります。
$ bundle exec fastlane tests
実行するといろいろなログが出力され、最後に以下のように結果が表示されます。成功した場合は以下のようになりました。
[23:43:47]: ▸ Test Succeeded
+----------------------------------------+
| Test Results |
+--------------------+-------------------+
| Number of tests | 5 (and 3 retries) |
| Number of failures | 0 |
+--------------------+-------------------+
+---------------------------------------+
| fastlane summary |
+------+------------------+-------------+
| Step | Action | Time (in s) |
+------+------------------+-------------+
| 1 | default_platform | 0 |
| 2 | run_tests | 213 |
+------+------------------+-------------+
[23:43:54]: fastlane.tools finished successfully 🎉
run_testsのパラメータの種類
run_tests
アクションにはいろいろなパラメータを指定できます。テスト実行するデバイスを選択したり、クリーンビルドの実行やテストレポートの出力先を変更することなどが可能になっています。
run_tests(
project: "FastlaneTest.xcodeproj", # プロジェクトファイル
scheme: "FastlaneTest", # テスト対象のスキーム名
devices: ["iPhone SE (2nd generation)", "iPhone 11 Pro"], # テスト実行するデバイス(シミュレーター)
configuration: "Debug", # ビルド構成
clean: true, # テスト実行前にクリーンビルド
skip_build: false, # ビルドのスキップ(falseでビルドを実行)
output_directory: "./fastlane/test_output", # テストレポートの出力先ディレクトリ
output_types: "html,junit", # 出力するレポートの形式
result_bundle: true, # テスト結果をバンドル形式で出力
fail_build: true # テストに失敗した場合にビルドを失敗として扱う
)
パラメータの種類は公式リファレンスを参照してください。
Cocoa Podsを使用していて.xcodeproj
ではなく.xcworkspace
を使用している場合はworkspace
パラメータを指定します。
run_tests(
pworkspace: "FastlaneTest.xcworkspace",
scheme: "FastlaneTest",
)
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。