的Xcode:为条件调试/测试代码预处理宏
我有专门的章节我的代码(例如在AppDelegate.m)不应该对单元测试进行编译,就像的Xcode:为条件调试/测试代码预处理宏
#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构建目标?)
有谁知道如何做到这一点,我认为这将是一个共同的问题...
我终于找到自己的答案:关键是要创建一个新的构建配置(让我们称之为该配置测试)
然后,相应地配置预处理器宏的值,因此对于配置调试和发布您设置CONFIGURATION_TESTS = 0并为配置测试,您设置CONFIGURATION_TESTS = 1
最后,编辑单元测试架构以使用测试作为构建组态。就是这样:P
我在我的blog
愚蠢的问题:为什么你需要CONFIGURATION_TESTS = 0非测试版本配置?我把这部分留下来,一切似乎都很好。 – 2014-05-15 04:57:22
您需要设置“CONFIGURATION_TESTS = 1”,而不仅仅是“CONFIGURATION_TESTS”
写了一个详细的一步一步的解释比我有同样的问题,不能弄明白 – shawnwall 2012-05-01 21:06:57
“这不工作:1)CONFIGURATION_TEST总是真实的?2)从来没有真正的?3)在单元测试但在应用程序中?4)在应用程序,但不是单元测试?(询问头脑想知道...) – geowar 2013-01-01 18:20:18