为什么不覆盖此行? Xcode代码覆盖率

时间:2019-03-20 09:36:04

标签: swift xcode code-coverage xctest

我在Xcode的代码覆盖率报告中遇到问题。 如您从此屏幕截图中所见:

enter image description here

在左边的选项卡上,从断点“触碰”了第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
}

2 个答案:

答案 0 :(得分:3)

实际上是报告here的错误。

  
      
  1. 在同一二进制文件上的XC 10上多次运行之间的覆盖数不同。就像在第一次运行中显示x%,而在另一次运行中,它将显示y%保持相同的代码。
  2.   
  3. 覆盖率数/测试数在11.4仿真器和12.0仿真器(均在XC 10上运行)上运行时会有所不同
  4.   
  5. 测试次数也有所不同,例如在某些运行中为5507次测试,而在某些运行中为5506次。
  6.   

XC 10肯定有很多错误。

答案 1 :(得分:0)

取出断点并运行测试。测试完成后,覆盖率信息应更改。