在 Xcode 方案中启动参数

Launch Arguments in Xcode schemes

我在看 SwiftMonkey。 link 是: https://github.com/zalando/SwiftMonkey

他们说使用命令行标志,如:

   if CommandLine.arguments.contains("--MonkeyPaws") {
        paws = MonkeyPaws(view: window!)
    }

并说使用命令行标志:

let application = XCUIApplication()

application.launchArguments = ["--MonkeyPaws"]

我在 Xcode 中尝试通过为 UITesting 创建一个新方案来做到这一点,然后在启动时添加参数:

这适用于主要方案,但不适用于 UITest(当我将参数放在方案的 运行 或测试部分时,参数不存在)。

我可以从模拟器启动测试:

xcodebuild -workspace SwiftMonkeyTutorial.xcworkspace -scheme "SwiftMonkeyTutorialUITests" -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 8,OS=12.2' test

但是添加如下参数会产生 "invalid option '-- MonkeyPaws'"

的错误
xcodebuild -workspace SwiftMonkeyTutorial.xcworkspace -scheme "SwiftMonkeyTutorialUITests" -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 8,OS=12.2' test --MonkeyPaws

如何向我的方案传递参数?

您可以使用 XCUIApplication 上的 launchArguments 属性 将 UI 测试的启动参数发送到被测应用程序:

let app = XCUIApplication()
app.launchArguments = ["--MonkeyPaws"]
app.launch()