我在Xcode的代码覆盖率报告中遇到问题。 如您从此屏幕截图中所见:
在左边的选项卡上,从断点“触碰”了第58行,在右边的选项卡上,测试通过了。在右侧标签上,我仅在第37行运行测试。
为什么Xcode用红色的58号标记未覆盖?
第53行未“触及”(如果我在此处设置了断点)。 使用SQLite作为数据库。
整个项目都可用here。
编辑:添加代码:
Test.swift
func testAddFuelFail() {
fuelsManager.dropTable()
XCTAssertEqual(addFuel(), -1)
}
FuelsManager.swift
func addFuel(dateOfFuel: Date, mileageOnSave: Int, quantityOfFuel: Double, pricePerUnitOfFuel: Double) -> Int64 {
let insertFuel = fuelsTable.insert(date <- dateOfFuel, mileage <- mileageOnSave, quantity <- quantityOfFuel, pricePerUnit <- pricePerUnitOfFuel)
do {
let id = try database!.run(insertFuel)
return id
} catch {
print(error)
}
return -1
}
答案 0 :(得分:3)
实际上是报告here的错误。
- 在同一二进制文件上的XC 10上多次运行之间的覆盖数不同。就像在第一次运行中显示x%,而在另一次运行中,它将显示y%保持相同的代码。
- 覆盖率数/测试数在11.4仿真器和12.0仿真器(均在XC 10上运行)上运行时会有所不同
- 测试次数也有所不同,例如在某些运行中为5507次测试,而在某些运行中为5506次。
XC 10肯定有很多错误。
答案 1 :(得分:0)
取出断点并运行测试。测试完成后,覆盖率信息应更改。