about
こちらの記事でUITest実行時以外の引数の渡し方について解説しているので
基本はこちらを参考にしてください。
Xcodeに引数を渡す LaunchArg & Env Variables
ここではUITest実行時の引数の受け取り方について触れます。
Bitriseの環境変数を渡す方法についても少し触れます。
環境
- Xcode11.x
- Swift4.x
設定方法
対象Scheme -> Edit Scheme -> Run -> Arguments
それぞれチェックの入っているものを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
そちらは別記事にて書きたいと思います。