2013-07-15 66 views
6

如何根据当前方案使测试主机/软件包加载器动态化?眼下值设置为:iOS单元测试的动态“测试主机”还是bundle loader?

$(BUILT_PRODUCTS_DIR)/MyApp1.app/MyApp1 

问题是我在工作区4级的应用程序,我想用相同的单元测试工具为所有的人。如何根据当前方案动态更改“MyApp1”部分?它是基于构建过程中的环境变量吗?我试着将它设置为像$(PROJECT_NAME)这样的东西,但那些似乎得到了测试套件的名称。

+0

我面临同样的问题。我有几个目标,我想要执行相同的目标测试。很明显,太多的Xcode处理。我的解决方案是添加一个脚本,以改变XCodeProject然后瞄准正确的应用程序。 –

回答

7

要做到这一点,你需要在构建设置中有一个变量 - 这看起来很简单,但事实并非如此。如果您通过应用程序或测试方案中的前置或后置步骤设置环境变量,则看起来好像不会在此处显示。毕竟构建设置发生在构建之前。预处理器宏也是如此,尽管使用xcodebuild并传入自定义选项可能会起作用。

我知道这样做的唯一方法是使用xcconfig文件。创建一个并将其应用于(至少)您的测试目标。内容应包括这样的事情: THINGUNDERTEST=FooBar

现在,在您的项目设置,羯羊在xcconfig或项目文件,设置BUNDLER_LOADER到: $(BUILT_PRODUCTS_DIR)/$(THINGUNDERTEST).app/$(THINGUNDERTEST)

,将工作。现在,您可以通过各种方式更改THINGUNDERTEST,并至少获得一些动态行为。这可能适用于您,也可能不适用,具体取决于您的需求 - 但它可能只是一个起点。

+0

就我而言,我的测试目标需要一个主机应用程序。所以'BUNDLER_LOADER'从'TEST_HOST'中读取值。因此,我将'$(BUILT_PRODUCTS_DIR)/ $(THINGUNDERTEST).app/$(THINGUNDERTEST)'设置为'TEST_HOST'。 – Hlung

+0

这确实有效。在我的情况下,我将'THINGUNDERTEST''的动态解析值作为xctool命令行参数发送给应用程序。同样应该适用于xcodebuild。例如。 '''xcodebuild THINUNDERTEST = MyApp测试''' –