从 XCTest 覆盖中忽略视图控制器

Posted

技术标签:

【中文标题】从 XCTest 覆盖中忽略视图控制器【英文标题】:Ignore View controllers from XCTest coverage 【发布时间】:2017-06-09 16:11:38 【问题描述】:

我第一次参加单元测试。我正在使用 MVVM,我可以使用单元测试(不是 ui 测试)测试几乎所有内容。问题是在覆盖范围内我的控制器类出现并且影响了我的覆盖范围。当然,我总是可以进行 UI 测试来涵盖这些类,但我不想要。是否可以从覆盖范围中忽略 import UIKit 的所有类?

【问题讨论】:

我建议对所有事物进行单元测试,包括视图控制器。如果我在您的团队中,我希望至少能够看到您对视图控制器的覆盖不足。无论你是否对它们进行单元测试,都不要隐瞒真相。 不应该隐藏它们。但我知道我的控制器除了 ViewModel 调用之外什么都没有。我总是可以使用 UI 测试来测试它们。 啊,很好。查看快照测试如何确认布局没有改变? (这些不必在视图控制器级别,但通常是。) 【参考方案1】:

这是不可能的(目前)。

但代码覆盖率并不是一个有用的指标。您可以在不改进测试套件的情况下增加覆盖率。你应该忽略这个数字。编写测试,直到您确信所有测试都通过的测试运行意味着应用可以正常工作。

或者,为您的视图控制器编写测试。

【讨论】:

另一个问题:好的代码的衡量标准是什么?如果你有一个,也许它也适合测试代码。我没有这样的指标。不是为了代码。不适用于测试代码。

以上是关于从 XCTest 覆盖中忽略视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

XCTest Xcode 7 beta 3 swift 2 从情节提要问题启动视图控制器

XCTest 中 viewDidLoad 的设置值

如何从 XCTest 中的 UI 目标调用主目标中的方法?

XCTest 如何执行 segue 呈现模态视图并测试presentedViewController

使用 Realm 进行 Swift XCTest UI 测试

iOS:使用 XCTest 对 UIViewController 组件进行单元测试