我需要访问一个名为 ENV 的环境变量,该变量在我的主要应用程序目标的 xcconfig 文件中设置,但要从我的 UI 测试目标内部访问。
经过大量谷歌搜索后,这就是我尝试过的:
- 将主 xcconfig 设置为 UITest 目标的配置
- 在测试计划配置中添加环境变量
ENV=$(ENV)
- 像这样打印环境字典
print(ProcessInfo.processInfo.environment)
但是 $(ENV)
并没有扩展到实际值。
我还尝试在 Info.plist
中为 UITest 目标添加自定义条目
<key>ENV</key>
<string>$(ENV)</string>
然后通过 Bundle.main.infoDictionary
访问它,但我再次得到字符串 $(ENV)
。知道我遗漏了什么,还是因为 UI 测试在 Xcode 中的工作方式而无法实现?
最佳答案
您需要做的是使用应用程序目标的 xcconfig 作为测试目标的构建配置。或者,如果您需要特定测试目标的构建配置,您可以将应用的 xcconfig 包含到测试目标 xcconfig 中。
然后在您的测试计划设置中,您将测试计划环境变量定义为 ENV=$(ENV)
基本上: 应用目标.xcconfig: ENV=appenv
测试目标.xcconfig: #include apptarget.xcconfig
在您定义的 testPlan 环境中: 环境=$(环境)
XCConfig 在构建时使用。 $(ENV) 必须在构建时扩展到您想要的值。您将通过使用 apptarget.xcconfig 作为测试目标的 xcconfig 或将其包含到您的 testarget.xcconfig 中来实现这一点
关于environment-variables - 如何从 XCUITest 代码访问 xcconfig 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62605104/