xctest - 预处理器宏

Posted

技术标签:

【中文标题】xctest - 预处理器宏【英文标题】:xctest - preprocessor macro [duplicate] 【发布时间】:2014-06-18 10:07:52 【问题描述】:

是否可以在(测试)目标设置或测试 .pch 文件中定义宏,以便将其传递给整个应用程序? 或者如果我们正在运行测试,是否已经有任何宏可用于检查(从代码中)?

例如:

#if TEST=1
  // do something
#else
  // do something else
#endif

我想要这样做的原因是在测试期间跳过一些代码、断言等(无需在每次运行测试时更改主应用程序 .pch 中的#define)。

谢谢。

【问题讨论】:

您对这个问题有进一步了解吗?我想在我的代码中添加一些测试装置。但不希望它出现在生产代码中。一些扩展和辅助函数。那种东西? 我个人最终使用了与此处所述类似的东西:***.com/a/15725328/727817。另一个不错的选择是设置一个新的构建配置来测试***.com/a/14718914/727817 【参考方案1】:

看起来你可以用与 Objective-C 非常相似的方式来做到这一点。 swift 编译器采用 -D 命令开关。为了使它适应测试,我只在测试目标构建设置中定义了我想要的文字。

说明:

Build settings for the Test Target -> 
      Swift Compiler Custom Flags -> 
         -DTEST (yes, including the -D prefix)

启用此代码:

// Objective-C and Swift
#if TEST
// Test only code version code
#else
// App only code
#endif

我在transitioning to swift的这篇文章中找到了解决方案。

【讨论】:

我相信这与在测试目标的 .pch 中设置 #define 相同,它只影响测试类,而不影响实际的应用程序类。不过,我已经使用'Other C Flags' 进行了测试,也许 swift 会有所不同。

以上是关于xctest - 预处理器宏的主要内容,如果未能解决你的问题,请参考以下文章

预处理器宏更改两个目标

Xcode:测试与调试预处理器宏

预处理器宏扩展为另一个预处理器指令

使用预处理器宏组成另一个宏调用

使用预处理器宏进行条件编译 Xcode

#if 和 #ifdef Objective-C 预处理器宏有啥区别?