如何使用 XCTest 使用 #available 语句覆盖所有功能分支

Posted

技术标签:

【中文标题】如何使用 XCTest 使用 #available 语句覆盖所有功能分支【英文标题】:How to cover all branches of function with #available statement with XCTest 【发布时间】:2020-08-13 14:14:39 【问题描述】:

我有一个带有#available 语句的函数,并希望通过使用 XCTest 的单元测试覆盖所有分支。这可能吗?

func foo() -> String 
    if #available(ios 13, *) 
        // Compute something using new iOS 13 API
     else 
        // Compute it the old way
    

【问题讨论】:

【参考方案1】:

您可以在运行测试时选择安装了所需操作系统的其他目标模拟器

【讨论】:

那只会覆盖另一个分支,因此不会给我想要的 100% 代码覆盖率。同样在 CI 管道中,我无法确定是否安装了 iOS 版本较低的模拟器。 您可以在目标上多次运行测试。检查man xcodebuild。要准备模拟器,请使用xcrun simctl

以上是关于如何使用 XCTest 使用 #available 语句覆盖所有功能分支的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Xcode 5 从命令行运行 xctest?

如何使用 XCTest 框架测试基于 REST 的原生 iOS 应用程序?

如何使用 xctest 滚动到特定位置

XCTest - 如何使用 Command 和 Shift 创建多个键修饰符标志?

如何使用 XCTest for iOS 14 取消通话

如何使用 XCTest 在以编程方式添加的 UIView 上测试 UILabel