Swift 为什么不包括这一行?Xcode代码覆盖率

Swift 为什么不包括这一行?Xcode代码覆盖率,swift,xcode,code-coverage,xctest,Swift,Xcode,Code Coverage,Xctest,我在Xcode中遇到一个代码覆盖率报告问题。 从这个屏幕截图中可以看到: 在左侧选项卡上,第58行从断点“接触”,在右侧选项卡上,测试通过。在右边的选项卡上,我只运行第37行的测试 为什么Xcode将第58行用红色标记为未覆盖 第53行没有“接触”(如果我在那里设置断点)。 使用SQLite作为数据库 整个项目是可用的 编辑:添加代码: 斯威夫特 func testAddFuelFail() { fuelsManager.dropTable() XCTAssertEqual(addFu

我在Xcode中遇到一个代码覆盖率报告问题。 从这个屏幕截图中可以看到:

在左侧选项卡上,第58行从断点“接触”,在右侧选项卡上,测试通过。在右边的选项卡上,我只运行第37行的测试

为什么Xcode将第58行用红色标记为未覆盖

第53行没有“接触”(如果我在那里设置断点)。 使用SQLite作为数据库

整个项目是可用的

编辑:添加代码:

斯威夫特

func testAddFuelFail() {
  fuelsManager.dropTable()
  XCTAssertEqual(addFuel(), -1)
}
燃料管理员,斯威夫特

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
}
func addFuel(dateOfFuel:Date,mileageOnSave:Int,quantityOfFuel:Double,pricePerUnitOfFuel:Double)->Int64{

让insertFuel=fuelsTable.insert(date取出断点并运行测试。一旦测试完成运行,覆盖率信息应该更改。

实际上是报告了一个错误

  • 在同一个二进制文件上的XC 10上多次运行时,覆盖率数字会有所不同。与第一次运行时一样,它显示x%vs在另一次运行时,它将显示y%,保持相同的代码
  • 在11.4模拟器和12.0模拟器上运行时,覆盖率/测试数量会有所不同,这两种模拟器都在XC10上运行
  • 测试的数量也有点不同,比如在一些运行中是5507个测试,而在一些运行中是5506个

  • XC 10当然有很多错误。

    关于这个问题,我们如何知道
    数据库是什么,以及
    运行
    方法是如何定义的,或者
    dropTable
    做了什么?我只能假设
    运行
    在出现错误时返回-1,而不是生成错误,或者Xcode代码覆盖率被破坏如果断点被触摸,这意味着返回值是“-1”,也意味着该行被覆盖。为什么Xcode报告它没有被覆盖?啊,我没有得到关于“触摸”的部分但是如果没有触及第51行,那么肯定是之前发生了一个错误,只剩下
    let insertFuel=…
    ,这没有多大意义。你是否尝试过使用打印语句而不是断点来跟踪发生了什么?@JoakimDanielson我刚刚上传了一个带有打印语句的新图像。对我来说,这看起来像是一个错误代码覆盖工具。谢谢你的回答,但是即使没有断点,代码也不会被覆盖。