我的 iOS 项目有五个方案:Local Development、Integration、QA、Demo 和 Production。每个方案都使用不同的配置来控制网络轮询频率、API 端点、分析等。
同样,我们有五个相应的目标:本地开发、集成、QA、演示和生产。每个目标都有几个用户定义的build设置,其中包含 API key 、计时数值等。
我们应用程序的 Info.plist
文件使用应用程序变量,例如 ${SOME_ENDPOINT_URL}
来绘制相应的用户定义的build设置。
为了检索变量,我执行了如下操作:
[[[NSBundle mainBundle] infoDictionary] valueForKey:@"Some Endpoint URL"]
这将对应于用户定义的build设置,如下所示:
"Some Endpoint URL" = ${SOME_ENDPOINT_URL}
我现在正在研究如何适本地配置项目以执行单元和逻辑测试。
为了构建测试以确定环境配置是否正确,我不确定最佳实践是什么。
- 为每个环境构建五个额外的特定于测试的目标是否正确?
- 或者覆盖每个方案的测试组件的“运行操作的参数”设置,并提供类似参数的东西来指定我们正在查看的方案是否更好?
- 是否有为具有多个环境的 iOS 项目配置单元和逻辑测试的现有引用资料?这个项目的复杂性似乎超出了大多数文档的范围。
最佳答案
以下是我所做的。
信息.plist
- 创建主 Info.plist 文件
- 为每个方案编写一个运行脚本(Shell Script),通过修改主 Info.plist 中的设置(使用 PlistBuddy -c)生成特定于环境的 Info.plist
- 将运行脚本添加到构建阶段(在“编译源”上方)
.h文件
在 .h 文件中定义配置设置(例如 config.h)
#if defined (CONFIG_FILE) #import CONFIG_FILE #endif
在您的代码中导入 config.h
为每个方案使用预处理器宏来选择目标 .h 文件。
-DCONFIG_FILE=local-env-config.h
关于ios - Xcode/iOS : Unit Tests, 方案和配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15256345/