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

时间:2016-01-06 13:37:12

标签: ios swift xcode7 xctest

当我在Swift中使用XCTest运行单元测试时,它们在关闭代码覆盖时运行正常。但是,一旦我尝试启用代码覆盖,我有一个失败的构建/测试,有4个类给出以下错误消息:命令因信号失败:分段错误:11

4 个答案:

答案 0 :(得分:3)

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

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

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

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

要清楚,代码编译并正常工作,直到我们尝试启用代码覆盖率。 我还发现此Open Radarthis guy's post概述了解决方案。似乎是一个Apple bug。

答案 1 :(得分:2)

如果没有代码,构建设置等,很难确定,但您应该检查的一件事是确保在单元测试类中使用@testable导入标记。< / p>

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

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

Code Coverage | Apple Developer

答案 2 :(得分:0)

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

在实现一个需要一个我实现为lazy var的可选变量的协议时,我遇到了同样的错误。

答案 3 :(得分:0)

在我的情况下,当我切换到Debug config构建并且测试工作正常时,我正在通过cli运行带有xcodebuild命令的cli版本,该命令具有Release配置,并且没有配置任何配置。