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