我的代码中有节(例如在AppDelegate.m中),不应为单元测试进行编译,例如
#ifndef CONFIGURATION_TESTS
// Code that should not be compiled in the Unit Tests
#endif
当您在创建新项目时选择“添加单元测试”时,将由Xcode设置目标。
在项目文件中,我已将标志CONFIGURATION_TESTS添加到MyAppTests内置目标的预处理器宏中,但未添加到MyApp Target的预处理器宏中。
这是我发现的许多帖子中建议的方法。
但这是行不通的,因为(我猜)MyAppTests目标将MyApp目标作为依赖项,并且因为AppDelegate.m已添加到MyApp目标,所以它使用MyAppbuild设置进行编译,因此未定义CONFIGURATION_TESTS 。
在单元测试文件中,定义了宏并按预期方式运行(因为测试文件仅由MyAppTests目标构建?)
有谁知道怎么做,我认为这将是一个普遍的问题...
最佳答案
我终于找到了答案:关键是创建一个新的构建配置(将此称为测试配置)
然后,您相应地配置预处理器宏的值,因此对于配置“调试和释放”,请设置CONFIGURATION_TESTS = 0,对于配置“测试”,请设置CONFIGURATION_TESTS = 1
最后,您编辑单元测试架构以将“测试”用作构建配置。就这样:P
我在blog上写了详细的分步说明