当我在Swift中使用XCTest运行单元测试时,它们在关闭代码覆盖时运行正常。但是,一旦我尝试启用代码覆盖,我有一个失败的构建/测试,有4个类给出以下错误消息:命令因信号失败:分段错误:11 。
答案 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 Radar和this guy's post概述了解决方案。似乎是一个Apple bug。
答案 1 :(得分:2)
如果没有代码,构建设置等,很难确定,但您应该检查的一件事是确保在单元测试类中使用@testable
导入标记。< / p>
例如,对于位于单元测试类顶部的名为MyApp
的项目,您将包含以下导入@testable import MyApp
。
您还需要检查以确保您已经完成了覆盖整个过程的流程。该信息记录在Apple的开发人员门户网站上:
答案 2 :(得分:0)
请参阅有关类似问题的此错误报告。 https://bugs.swift.org/plugins/servlet/mobile#issue/SR-1825
在实现一个需要一个我实现为lazy var的可选变量的协议时,我遇到了同样的错误。
答案 3 :(得分:0)
在我的情况下,当我切换到Debug config构建并且测试工作正常时,我正在通过cli运行带有xcodebuild命令的cli版本,该命令具有Release配置,并且没有配置任何配置。