Xcode:条件DEBUG / TEST代码的预处理器宏

时间:2012-02-21 00:16:15

标签: xcode unit-testing debugging macros preprocessor

我的代码中有部分(例如在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目标构建?)

有谁知道这是怎么做的,我认为这是一个常见的问题......

2 个答案:

答案 0 :(得分:11)

我终于找到了答案:关键是要创建一个新的构建配置(让我们调用这个配置测试)

然后相应地配置预处理器宏的值,因此对于配置Debug和Release,设置CONFIGURATION_TESTS = 0,对于配置测试,设置CONFIGURATION_TESTS = 1

最后,编辑Unit-Test架构以使用Testing作为构建配置。就是这样:P

我在blog

上写了详细的逐步说明

答案 1 :(得分:3)

您需要设置“CONFIGURATION_TESTS = 1”,而不仅仅是“CONFIGURATION_TESTS”