为啥某些功能覆盖率已经 100% xcode 9

Posted

技术标签:

【中文标题】为啥某些功能覆盖率已经 100% xcode 9【英文标题】:Why some functions coverage is already 100% xcode 9为什么某些功能覆盖率已经 100% xcode 9 【发布时间】:2018-06-19 08:32:22 【问题描述】:

我最近开始为我的项目编写测试。在编写了一些测试后,我在覆盖率部分意识到我的一些类或函数的 覆盖率 超过 50%(如 AppDelegate中的 didFinishLaunchingWithOptions func >)没有,我为他们写了任何测试。 这个覆盖范围是从哪里来的?

【问题讨论】:

【参考方案1】:

当测试运行时,它们正在启动您的应用。这意味着他们正在使用您的 UIApplicationDelegate 实现和 didFinishLaunchingWithOptions 运行,包括从中调用的所有方法。

如果方法运行,则计算其覆盖率。如果没有分支,则覆盖率为 100%。

相关:Unit Testing in Xcode, does it run the app? 基本上,您可以在测试时注入一个空的应用程序委托来避免这种行为。

【讨论】:

那么视图控制器中的 viewDidAppear 等函数的逻辑是否相同? @MohammadKhakpaki 。我不明白你的问题。我告诉你,单元测试基本上是启动你的应用程序,然后他们在里面运行单元测试。 我理解你。我的下一个问题是这种情况(100% 覆盖率)也发生在 viewControllers 中的 viewDidAppear 等功能上。您认为这种行为原因与您所说的相同吗? @MohammadKhakpaki 是的。应用程序委托通常会实例化根控制器并将其显示在屏幕上。和你正常启动应用但根本不触屏时一样。 我在运行测试时使用了不同的应用代理:qualitycoding.org/ios-app-delegate-testing

以上是关于为啥某些功能覆盖率已经 100% xcode 9的主要内容,如果未能解决你的问题,请参考以下文章

为啥这条线没有被覆盖? Xcode 代码覆盖率

为啥我做的一个网页body宽高设置为100%,却覆盖不了整个屏幕

如何在 XCode 9.3 上收集覆盖率数据?

iOS 9 学习系列: Xcode Code Coverage

当我尝试在 Xcode 6.1 中调整情节提要中其他视图的大小时,为啥某些视图的框架变为 (0,0,0,0)

Xcode 7 中的 UI 测试功能