当我在Swift中使用XCTest运行单元测试时,它们在关闭代码覆盖时运行良好 . 但是,一旦我尝试启用代码覆盖,我有一个失败的构建/测试与4个类给出以下错误消息: Command failed due to signal: Segmentation fault: 11 .
这对我有用(因为所有其他建议在我的案例中都不起作用) . 当尝试运行代码覆盖率为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 Radar和this guy's post . 似乎是一个Apple bug .
没有代码,构建设置等,很难说肯定,但你要检查的一件事是确保你在单元测试类中使用 @testable import标志 .
@testable
例如,对于名为 MyApp 的项目,您将在单元测试类的顶部包含以下导入 @testable import MyApp .
MyApp
@testable import MyApp
您还需要检查以确保您已完成覆盖整个过程的过程 . 该信息记录在Apple的开发人员门户网站上:
Code Coverage | Apple Developer
有关类似问题,请参阅此错误报告 . https://bugs.swift.org/plugins/servlet/mobile#issue/SR-1825
我在实现一个需要一个可选变量的协议时遇到了同样的错误,我将其实现为一个惰性var .
3 回答
这对我有用(因为所有其他建议在我的案例中都不起作用) . 当尝试运行代码覆盖率为ON的单元测试时,我在特定的Swift类上遇到了分段错误11 . 事实证明,我们在类的属性上有一个三元表达式,如下所示:
使它成为一个懒惰的var修复了这个问题:
要清楚,代码编译和工作正常 until we tried turning on code coverage . 我还发现了这个概述解决方案的Open Radar和this guy's post . 似乎是一个Apple bug .
没有代码,构建设置等,很难说肯定,但你要检查的一件事是确保你在单元测试类中使用
@testable
import标志 .例如,对于名为
MyApp
的项目,您将在单元测试类的顶部包含以下导入@testable import MyApp
.您还需要检查以确保您已完成覆盖整个过程的过程 . 该信息记录在Apple的开发人员门户网站上:
Code Coverage | Apple Developer
有关类似问题,请参阅此错误报告 . https://bugs.swift.org/plugins/servlet/mobile#issue/SR-1825
我在实现一个需要一个可选变量的协议时遇到了同样的错误,我将其实现为一个惰性var .