Xcode / iOS:单元测试、方案和配置
Posted
技术标签:
【中文标题】Xcode / iOS:单元测试、方案和配置【英文标题】:Xcode / iOS: Unit Tests, Schemes, and Configurations 【发布时间】:2013-03-06 19:32:20 【问题描述】:我的 ios 项目有五个方案:本地开发、集成、QA、演示和生产。每个方案都使用不同的配置来控制网络轮询频率、API 端点、分析等。
同样,我们有五个相应的目标:本地开发、集成、QA、演示和生产。每个目标都有几个用户定义的构建设置,其中包含 API 密钥、计时数值等。
我们应用程序的Info.plist
文件使用$SOME_ENDPOINT_URL
等应用程序变量来绘制相应的用户定义的构建设置。
要检索变量,我执行以下操作:
[[[NSBundle mainBundle] infoDictionary] valueForKey:@"Some Endpoint URL"]
这将对应于用户定义的构建设置,如下所示:
"Some Endpoint URL" = $SOME_ENDPOINT_URL
我现在正在研究如何适当地配置项目以执行单元和逻辑测试。
要构建测试以确定环境是否配置正确,我不确定最佳做法是什么。
为每个环境额外构建五个特定于测试的目标是否正确? 或者最好覆盖每个方案的测试组件的“运行操作的参数”设置,并提供类似参数的东西来指定我们正在查看的方案? 是否有任何现有的参考资料可以为具有多个环境的 iOS 项目配置单元和逻辑测试?这个项目的复杂性似乎超出了大多数文档的范围。【问题讨论】:
Apple 一直在对整个 Targets/Schemes 系统进行非向后兼容的更改 - 我认为您没有找到文档的原因是 Apple 打算/期望在未来进行更多此类更改,并且希望躲开他们将收到的高炮。 Apple 的某个人似乎特别讨厌 Targets,所以我个人会采用“使用参数”的方法 - Targets 可能会被削弱(再次:()。 与其有这么多不同的目标,为什么不只有一个目标,五种配置呢?您将拥有 LocalDev、Integ、QA、Demo、Prod,而不是 Debug 和 Release。然后,您可以创建五个构建相同目标但配置不同的方案。 @JacobLukas 你知道你所描述的一个很好的教程吗?我一直避免使用方案,但听起来它们真的很有用。 这里是如何在 Xcode 中创建配置的链接:developer.apple.com/library/mac/recipes/… 目标和方案是当今的首选方式,而不是使用不同的配置。很多事情都依赖于调试和发布配置——不要走那条路,你的日子不好过。 @Kevin - 为什么需要测试每个目标?我有类似的设置,但仅在开发/内部目标上进行单元测试,因为测试其他目标将是多余的。 【参考方案1】:以下是我的工作。
Info.plist
创建一个主 Info.plist 文件 为每个方案编写一个运行脚本(Shell 脚本),通过修改主 Info.plist 中的设置来生成特定于环境的 Info.plist(使用 PlistBuddy -c) 将运行脚本添加到构建阶段(在“编译源”上方).h 文件
在 .h 文件中定义配置设置(例如 config.h)
#if defined (CONFIG_FILE)
#import CONFIG_FILE
#endif
在代码中导入 config.h
为每个方案使用预处理器宏来选择目标 .h 文件。
-DCONFIG_FILE=local-env-config.h
【讨论】:
以上是关于Xcode / iOS:单元测试、方案和配置的主要内容,如果未能解决你的问题,请参考以下文章