LoginSignup
2
3

More than 3 years have passed since last update.

XcodeのXCUITestで実行時に引数を渡す

Posted at

about

こちらの記事でUITest実行時以外の引数の渡し方について解説しているので
基本はこちらを参考にしてください。

Xcodeに引数を渡す LaunchArg & Env Variables

ここではUITest実行時の引数の受け取り方について触れます。

Bitriseの環境変数を渡す方法についても少し触れます。

環境

  • Xcode11.x
  • Swift4.x

設定方法

対象Scheme -> Edit Scheme -> Run -> Arguments

scheme_argv.png

それぞれチェックの入っているものをAppendしてみました。

2種類の入力が可能なので以下でみていきます。

  • Arguments Passed On Launch
  • Environment Variables

Arguments Passed On Launch

型:[String]

取得方法

class SampleTests: XCTestCase {

    override func setUp() {
        if ProcessInfo.processInfo.arguments.contains("isTestMode") {
            print("test mode enable")
        }
    }
}

注意点

似た要素にXCUIApplication().launchArgumentsがありますが、こちらはコード内で設定したい場合に利用すればOKだと思います。

class SampleTests: XCTestCase {

    let app = XCUIApplication()

    override func setUp() {
        app.launchArguments.append("isTestMode")

        if app.launchArguments.contains("isTestMode") {}
    }
}

Environment Variables

型:[String : String]

取得方法

スクショでの引数を受け取る方法は以下

class SampleTests: XCTestCase {

    override func setUp() {
        print(ProcessInfo.processInfo.environment["mode"]) //develop
    }
}

注意点

似た要素にXCUIApplication().launchEnvironmentがありますが、こちらはコード内で設定したい場合に利用すればOKだと思います。

class SampleTests: XCTestCase {

    let app = XCUIApplication()

    override func setUp() {
        app.launchEnvironment = ["mode": "develop"]
        switch app.launchEnvironment["mode"] {
            case "develop":
                print("develop env")
            default:
                print("default env")
        }
    }
}

Bitriseから環境変数を設定してコードから取得したい場合

Schemeファイルは以下のようなファイルになりますが、Bitriseのビルド時に書き換えるのはdiffを見れば分かりますが脆いのでplistを利用するのが良いと思います。
TargetProject.xcodeproj/xcshareddata/xcschemes/TargetUITests.xcscheme

そちらは別記事にて書きたいと思います。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3