Xcode UI 测试环境变量未从 Scheme 传递

Xcode UI Test environment variables not being passed from Scheme

在 Xcode 9.2 中,对于我的 iOS 应用程序,我有一个用于 运行 宁我的 UI 测试套件的方案。在此方案中,在 "Test" 选项卡下,我同时定义了环境变量和参数。当我的测试 运行 时,这些变量对我的应用程序代码不可用。

但是,我能够在测试代码中以编程方式设置参数和 launchEnvironment,并且这些参数在 运行 正在接受测试时可供应用程序使用。

我还在 "Run" 选项卡中设置了环境变量和参数,当我仅 运行 模拟器中的应用程序时,这些是可用的。当我 运行 我的 UI 测试时,它们不可用,无论我是否打开 "Use the Run action's arguments and environment variables"。

为了查看 args 和环境变量的值,我在我的 applicationDidFinishLaunching 中设置了一个断点,并且我 po ProcessInfo.processInfo.environmentpo ProcessInfo.processInfo.arguments.

我是不是设置有误?

方案编辑器中提供的启动参数和启动环境仅传递给 UI 测试运行器。您只能在 UI 测试 类.

中读取这些值

如果您想将这些值传递给应用程序本身,您必须在代码中进行:

let app = XCUIApplication()
app.launchArguments = ["amandaArgument"]
app.launchEnvironment = ["AMANDA_UI_TESTING": "Value"]
app.launch()