Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 单元测试目标c代码时如何禁用日志记录_Objective C_Unit Testing_Logging - Fatal编程技术网

Objective c 单元测试目标c代码时如何禁用日志记录

Objective c 单元测试目标c代码时如何禁用日志记录,objective-c,unit-testing,logging,Objective C,Unit Testing,Logging,我需要在自动运行单元测试时禁用日志记录,以便显著提高测试速度(~20s vs 0.374s,现在只有几个测试,但测试代码中有一个大循环) 我尝试在测试代码头中定义宏,如下所示: #define UNIT_TESTING 在要测试的代码中,我首先检查是否定义了这样的宏: #ifndef UNIT_TESTING NSLog("whatever log"); #endif 但它似乎不起作用,我猜这是因为我没有在要测试的代码中导入测试代码头。我不能这样做,因为这样即使不是单元测试也不会打印日志 我

我需要在自动运行单元测试时禁用日志记录,以便显著提高测试速度(~20s vs 0.374s,现在只有几个测试,但测试代码中有一个大循环)

我尝试在测试代码头中定义宏,如下所示:

#define UNIT_TESTING
在要测试的代码中,我首先检查是否定义了这样的宏:

#ifndef UNIT_TESTING
NSLog("whatever log");
#endif
但它似乎不起作用,我猜这是因为我没有在要测试的代码中导入测试代码头。我不能这样做,因为这样即使不是单元测试也不会打印日志

我对objective c比较陌生,来自Java背景,我猜头/宏定义有问题


还有一个问题是,我是否需要为单元测试定义一个宏,难道还没有类似的东西吗?

您需要在单元测试目标的构建设置中定义
单元测试


在左窗格中选择项目,然后选择单元测试目标,然后选择生成设置-->所有-->预处理器宏。

您需要在单元测试目标的生成设置中定义
单元测试


在左窗格中选择您的项目,然后选择单元测试目标,然后构建设置-->所有-->预处理器宏。

请注意,不是每次要记录某项内容时都要测试
单元测试
,而是可以有条件地定义一个来定义MYLOG(…)(NSLog(u VA_ARGS))
定义MYLOG(…)
。此外,如果您使用日志记录来打印调试信息,则应改用交互式调试器;您将获得对流程的更多控制,而这个问题就消失了。请注意,您可以有条件地定义一个来定义MYLOG(…)(NSLog(u VA_ARGS_u))
#定义MYLOG(…)
。此外,如果您使用日志记录来打印调试信息,则应改用交互式调试器;你会对整个过程有更多的控制,这个问题就消失了。是的,谢谢。对于绝对初学者来说,可能值得一提的是,您需要首先选择Build Settings页面下的All选项卡,这样预处理器选项将可见。是的,它可以工作,谢谢。对于绝对初学者来说,可能值得一提的是,您需要首先选择Build Settings页面下的All选项卡,这样预处理器选项将可见。