ios - Xcode/iOS : Unit Tests, 方案和配置

标签 ios xcode

我的 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/

相关文章:

ios - 有没有办法检查静音状态?

c - 某些转义序列字符无法使用 XCode 工作

ios - 绘制圆线iOS Swift

ios - 自定义 UIButton 圆角在突出显示时变为方形?

ios - 如何在 Swift 中保存 CoreGraphics 绘图

iPhone 开发 - Origin 和 bounds 有什么区别?

ios - 如何更改 Xcode Swift Playgrounds(.swiftpm) 项目中的字体?

ios - 使用 Xcode 4.2 从 navcontroller 中删除一个 View 然后推送一个新 View ?

c++ - 在 XCode 4.1 中禁用有关 Boost header 的警告

ios - 在模型编辑器中更改模型时重新创建 NSManagedObject 子类