【问题标题】:Exclude SwiftUI previews from code coverage?从代码覆盖范围中排除 SwiftUI 预览?
【发布时间】:2021-02-12 16:00:44
【问题描述】:

我无法将代码覆盖率提高到最低限度。 90% 因为 XCode 考虑了 PreviewProvider。

我该怎么办?删除所有 SwiftUI 预览?或者有没有办法可以排除一些带有“PreviewProvider”关键字等的行。

Xcode 12.0 版 詹金斯 CI slather & cobertura 的代码覆盖率

附带问题,没有可用于单元测试 SwiftUI 组件的官方测试套件。你们根本不测试它们,还是使用第三方库?我一直在使用 ViewInspector,但我不喜欢用它来跟踪组件的更新状态,我需要在实际代码库本身中包含测试代码。

【问题讨论】:

  • 您可以使用一些定义的宏创建专用测试配置,并排除该定义使用提供的预览。 SwiftUI as UI 可以通过与 UIKit 之前相同的 UI 测试目标类型进行测试。
  • 我没有测试 SwiftUIView 文件,我只是将 PreView 注释掉。
  • 你为什么要这个?你真的在测试视图代码吗?如果没有,您可以简单地排除视图文件。否则,您似乎需要的是欺骗性报道。

标签: swift xcode swiftui cobertura


【解决方案1】:

这里是工作方法的描述(使用 Xcode 13 / iOS 15 进行演示):

  1. 为 UT 添加显式测试(根据需要命名)配置

  1. 为测试配置添加条件宏 TESTING(根据需要命名)

  1. 将预览提供者置于类似状态
struct ContentView: View {
    var body: some View {
        Text("Hello, world!")
            .padding()
    }
}

#if !TESTING
struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
#endif
  1. 为 UT 架构设置测试配置

  1. 运行 UT 并观察覆盖率

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    • 2016-03-29
    • 2015-04-27
    • 1970-01-01
    • 1970-01-01
    • 2022-10-21
    • 2018-04-05
    相关资源
    最近更新 更多