自动化测试和Xcode配置文件指定API目标

3

我正在编写自动化测试脚本,可以从命令行运行以测试我的iOS应用程序的用户界面。我已经编写了Bash脚本,可以清理和构建项目,并运行我的UI自动化测试。

问题在于,我希望命令行脚本能够更改Xcode项目中的C标志,以确定我指向的应用程序服务器是哪个。例如:

./run-test -target "Debug-Server"

当执行以下操作时,将会把C-Flag SERVER_ADDRESS的值更改为DEBUG_SERVER:

./run-test -target "QA-Server"

将C-Flag SERVER_ADDRESS的值更改为QA_SERVER。

为了实现此目的,我计划创建一个.xcconfig文件,将其提供给xcodebuild,将我的代码中的C标志设置为指向正确的服务器。类似于以下内容:

xcodebuild -target <TARGET_NAME> -configuration Debug-QA.xcconfig -sdk "$DEVICE_SLUG""$CURRENT_SDK" DSTROOT=. clean build

我对.xcconfig文件并不熟悉,所以有几个问题需要解答:

  1. 在我的.xcconfig文件中,是否需要描述每一个构建设置?或者Xcode是否有一些“默认”值可供使用?
  2. 有没有更好的方法实现这个功能呢?
1个回答

3
我想通了,使用了.xcconfig和#ifdef语句的组合:
在我声明服务器的配置文件中:
#ifdef USE_DEV
#define SERVER_ADDRESS   DEV_SERVER_ADDRESS   //USED IN AUTOMATED TESTING DEBUG SERVERS

#elif defined USE_QA
#define SERVER_ADDRESS   QA_ADDRESSS          //USED IN AUTOMATED TESTING STAGING SERVERS 

#elif defined USE_LIVE
#define SERVER_ADDRESS   LIVE_SERVER_ADDRESS  //USED IN AUTOMATED TESTING LIVE SERVERS

#else
#define SERVER_ADDRESS   DEV_SERVER_ADDRESS   //DEFAULT VALUES
#endif

我随后使用了三个 .xcconfig 文件,它们分别具有以下内容:

dev.xcconfig:

GCC_PREPROCESSOR_DEFINITIONS = USE_DEV

QA.xcconfig:

GCC_PREPROCESSOR_DEFINITIONS = USE_QA

LIVE.xcconfig:

GCC_PREPROCESSOR_DEFINITIONS = USE_LIVE

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接