首页 文章

在Swift中打开代码覆盖时的分段错误11

提问于
浏览
4

当我在Swift中使用XCTest运行单元测试时,它们在关闭代码覆盖时运行良好 . 但是,一旦我尝试启用代码覆盖,我有一个失败的构建/测试与4个类给出以下错误消息: Command failed due to signal: Segmentation fault: 11 .

3 回答

  • 3

    这对我有用(因为所有其他建议在我的案例中都不起作用) . 当尝试运行代码覆盖率为ON的单元测试时,我在特定的Swift类上遇到了分段错误11 . 事实证明,我们在类的属性上有一个三元表达式,如下所示:

    let cellBorder : CGFloat = MyHelperClass.isIPad() ? 10.0 : 6.0
    

    使它成为一个懒惰的var修复了这个问题:

    lazy var cellBorder : CGFloat = MyHelperClass.isIPad() ? 10.0 : 6.0
    

    要清楚,代码编译和工作正常 until we tried turning on code coverage . 我还发现了这个概述解决方案的Open Radarthis guy's post . 似乎是一个Apple bug .

  • 0

    没有代码,构建设置等,很难说肯定,但你要检查的一件事是确保你在单元测试类中使用 @testable import标志 .

    例如,对于名为 MyApp 的项目,您将在单元测试类的顶部包含以下导入 @testable import MyApp .

    您还需要检查以确保您已完成覆盖整个过程的过程 . 该信息记录在Apple的开发人员门户网站上:

    Code Coverage | Apple Developer

  • 2

    有关类似问题,请参阅此错误报告 . https://bugs.swift.org/plugins/servlet/mobile#issue/SR-1825

    我在实现一个需要一个可选变量的协议时遇到了同样的错误,我将其实现为一个惰性var .

相关问题