You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将SwiftUI文件排除在单元测试代码覆盖率统计之外?

解决SwiftUI #Preview代码被纳入单元测试覆盖率统计的问题

你遇到的情况是因为Xcode(尤其是15及以上版本)默认会将#Preview宏展开后的代码纳入单元测试覆盖率统计,并非遗漏基础配置,可通过以下两种方式解决:

方法一:用自定义编译条件隔离预览代码

  1. 打开Xcode,选中测试目标(不是主App目标),进入Build Settings
  2. 搜索Other Swift Flags,添加编译标志 -D TESTING
  3. 修改你的SwiftUI代码,将#Preview块用条件编译包裹:
struct ContentView: View {
    var body: some View {
        VStack {
            Text("Hello world")
        }
    }
}

#if !TESTING
#Preview {
    ContentView()
}
#endif

这样测试目标编译时会跳过预览代码,自然不会统计其覆盖率。

方法二:在测试目标中排除预览相关文件

如果不想修改代码,可直接在测试目标的编译阶段排除包含#Preview的文件:

  1. 选中测试目标,进入Build Phases -> Compile Sources
  2. 找到包含#Preview的文件(比如ContentView.swift),点击移除按钮
  3. 注意:这种方式会让测试目标不编译该文件的任何代码,若该文件中有测试依赖的逻辑,不建议使用。

补充说明

早期Xcode版本中#Preview可能默认被覆盖率工具忽略,但新版本Xcode优化了宏处理逻辑,会将其视为常规代码纳入统计,因此需要手动配置排除规则。

内容的提问来源于stack exchange,提问作者Sivaprasad Km

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 03:00:59