【问题标题】:Xcode / iOS: Unit Tests, Schemes, and ConfigurationsXcode / iOS:单元测试、方案和配置
【发布时间】: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 - 为什么需要测试每个目标?我有类似的设置,但仅在开发/内部目标上进行单元测试,因为测试其他目标将是多余的。

标签: ios xcode


【解决方案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
    

【讨论】:

    猜你喜欢
    • 2016-05-29
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多