【问题标题】:Use macro for iOS Unit Test使用宏进行 iOS 单元测试
【发布时间】:2015-12-13 16:51:17
【问题描述】:

我正在为我的相机应用程序编写测试用例。

例如,我想在模拟器中运行测试时提供一个模拟对象。我不能像这样使用宏来运行相应的代码:

    #if TARGET_OS_SIMULATOR
    vc.camera = mockCamera
    #endif

有什么更好的方法来做到这一点?

【问题讨论】:

    标签: xcode unit-testing ios-simulator xctest


    【解决方案1】:

    您无法通过宏测试应用程序是否正在测试中运行。你可以通过NSProcessInfo在运行时测试它:

    [[NSProcessInfo processInfo] environment]["XCInjectBundle"]
    

    【讨论】:

    • 谢谢。我应该检查文件夹名称是否有区别吗?正如我发现的 Debug-iphonesimulatorDebug-iphoneos
    • 只有在测试时XCInjectBundle才会有值,所以你只需要检查它是否有非nil值。
    • 我的情况是在测试中同时运行模拟器和设备,我想区分它们。
    • 好吧,您可以结合宏方法,或者按照您当时的建议检查捆绑路径。就我个人而言,我会创建诸如 App.isTestBundle()、App.isSimulator() 等辅助方法来提供帮助,这比使用大量宏要好。
    • 感谢您的提示。我会坚持目前的做法。 Helper 类也绝对有用且干净。
    猜你喜欢
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多