2013-03-06 47 views
6

我的iOS项目有五个方案:本地开发,集成,质量保证,演示和生产。每种方案都使用不同的配置来控制网络轮询频率,API端点,分析等等。Xcode/iOS:单元测试,方案和配置

同样,我们有五个相应的目标:本地开发,集成,质量保证,演示和生产。每个目标有几个用户定义的生成设置,其包含API的键,定时数值等

我们的应用程序的Info.plist文件使用应用程序变量如${SOME_ENDPOINT_URL}在相应的用户定义的构建设置来绘制。

要检索的变量,我这样做如下:

[[[NSBundle mainBundle] infoDictionary] valueForKey:@"Some Endpoint URL"] 

这将对应于用户定义的构建设置,就像这样:

"Some Endpoint URL" = ${SOME_ENDPOINT_URL} 

我现在正在考虑如何正确配置项目以执行单元和逻辑测试。

要构建测试以确定环境是否配置正确,我不确定最佳实践是什么。

  • 为每个环境构建五个额外的测试特定目标是否正确?
  • 或者为每个方案的测试组件覆盖“Run action's arguments”设置,并提供一些参数来指定我们正在查看的方案?
  • 是否有任何现有的参考用于为具有多个环境的iOS项目配置单元和逻辑测试?这个项目的复杂性似乎超出了大多数文档的范围。
+0

苹果不断使整个目标/计划系统非向后兼容的改变 - 我认为你没有找到文档的原因是,苹果打算/希望让更多的这些打算前锋,并希望躲开他们将会得到的高射炮。有人在苹果似乎特别讨厌目标,所以我会亲自去使用“使用参数”的方法 - 目标可能会被nerfed(又:(:)。 – Adam 2013-04-05 20:07:29

+3

而不是有这么多不同的目标,为什么不只有一个目标,以及五种配置,而不是调试和发布,你可以使用LocalDev,Integ,QA,Demo,Prod,然后你可以创建五个方案来构建相同的目标,但是具有不同的配置 – 2013-06-16 17:45:06

+0

@JacobLukas你知道吗?我总是避免使用方案,但听起来他们真的很有用。 – DogCoffee 2013-09-16 22:44:10

回答

1

以下是我所做的。

的Info.plist

  • 创建主Info.plist文件
  • 撰写运行脚本(Shell脚本)为每个方案通过在主信息修改设置,以生成特定环境的Info.plist的.plist(使用PlistBuddy -c)
  • 添加运行脚本来构建阶段(上面的 “编译源”)

.h文件中

  • 在.h文件中定义配置设置(例如,每个方案的config.h)在你的代码

    #if defined (CONFIG_FILE) 
    #import CONFIG_FILE 
    #endif 
    
  • 进口的config.h

  • 使用预处理器宏来选择目标.h文件中。

    -DCONFIG_FILE=local-env-config.h