使用宏进行 iOS 单元测试
Posted
技术标签:
【中文标题】使用宏进行 iOS 单元测试【英文标题】:Use macro for iOS Unit Test 【发布时间】:2015-12-13 16:51:17 【问题描述】:我正在为我的相机应用程序编写测试用例。
例如,我想在模拟器中运行测试时提供一个模拟对象。我不能像这样使用宏来运行相应的代码:
#if TARGET_OS_SIMULATOR
vc.camera = mockCamera
#endif
有什么更好的方法来做到这一点?
【问题讨论】:
【参考方案1】:您无法通过宏测试应用程序是否正在测试中运行。你可以通过NSProcessInfo
在运行时测试它:
[[NSProcessInfo processInfo] environment]["XCInjectBundle"]
【讨论】:
谢谢。我应该检查文件夹名称是否有区别吗?正如我发现的Debug-iphonesimulator
和 Debug-iphoneos
只有在测试时XCInjectBundle
才会有值,所以你只需要检查它是否有非nil值。
我的情况是在测试中同时运行模拟器和设备,我想区分它们。
好吧,您可以结合宏方法,或者按照您当时的建议检查捆绑路径。就我个人而言,我会创建诸如 App.isTestBundle()、App.isSimulator() 等辅助方法来提供帮助,这比使用大量宏要好。
感谢您的提示。我会坚持目前的做法。 Helper 类也绝对有用且干净。以上是关于使用宏进行 iOS 单元测试的主要内容,如果未能解决你的问题,请参考以下文章
Zephyr单元测试框架:ztest/twister的使用和介绍
iOS 单元测试:如何对 firstResponderStatus 进行单元测试