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

我在我的代码(例如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写了一个详细的分步说明

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...