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