动态更改单元测试的Bundle Loader

时间:2014-03-11 04:39:57

标签: ios xcode build-process

我有一个包含多个目标的Xcode项目,但我想要在所有目标中运行相同的单元测试。

我创建了单元测试并将其附加到项目中的每个目标(使用编辑方案>测试菜单)。 Xcode仍然使用“Bundle Loader”项目设置来确定执行测试时要运行的应用程序。

所以我创建了一个单元测试使用的.xcconfig文件。这就是它的样子:

SO_BUILDING_PRODUCT_NAME = None
BUNDLE_LOADER = $BUILT_PRODUCTS_DIR/$(SO_BUILDING_PRODUCT_NAME).app/$SO_BUILDING_PRODUCT_NAME 

正如您所看到的,它非常简单。然后我编写了一个bash脚本,它将“None”更改为正在构建的Xcode目标的实际名称。然后我将此脚本添加到每个目标的预执行构建阶段。

我可以看到,一旦我告诉Xcode测试,.xcconfig文件立即更新,我甚至可以自动查看Xcode的单元测试更新UI。不幸的是,虽然每次我更改目标时,我都需要构建两次才能使更改生效。似乎我为Xcode注意或关心我的改变太迟了。

有没有人对如何强制Xcode注意我在构建过程开始时所做的更改有一些建议?

1 个答案:

答案 0 :(得分:1)

据我所见(尽管自Xcode 5发布以来我没有探索过这个),只要你点击Build,就无法通过.xcconfig文件改变任何构建设置,Xcode似乎在你有机会运行任何脚本或类似的东西之前拍摄快照。

除非动态.xcconfig配置的这些限制发生了变化,否则您需要尝试不同的方法。我不熟悉BUNDLE_LOADER,但如果您可以通过脚本更改变量,而不是更改.xcconfig文件本身,那么您可能会有更多的运气。