Xcode-Swift计算属性的奇怪代码覆盖率

时间:2019-03-19 09:57:49

标签: swift xcode unit-testing code-coverage

我已经为单元测试启用了代码覆盖率,但是对于一个结构,即使我相信我正在测试所有可能的代码路径,我也无法达到100%的水平。

我的结构的计算属性定义为:

var nativeSize: CGSize {
    if rotated {
        return targetRect.size.rotated
    } else {
        return targetRect.size
    }
}

(此处,targetRect是具有相同结构的存储属性,类型为CGRectself.rotated是存储的布尔属性,而self.size.rotatedCGSize的扩展名,该扩展名仅返回widthheight互换的副本)

我的单元测试代码创建了该结构的两个实例,一个实例的rotated设置为true,另一个实例的结构设置为false,并在其中访问此nativeSize属性每个(覆盖两个代码路径),声明它们与期望值相等。

但是,该结构的覆盖率仅为95.5%。在代码编辑器上,它被突出显示如下:

enter image description here

(这是整个源文件中唯一的红色区域)

这是Xcode的错误,还是我遗漏了其他内容?

1 个答案:

答案 0 :(得分:1)

我会说这是一个 bug

我在Xcode 10.2中复制了您的代码,并且得到了相同的行为。

enter image description here

但是,如果我将语法更改为等效的单行代码,则覆盖率将达到100%。

enter image description here

我建议您打开雷达。我会做同样的事情。