为什么不包括这条线? Xcode代码覆盖率

问题描述 投票:5回答:2

我遇到了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
}
swift xcode code-coverage xctest
2个回答
3
投票

实际上它报告了here的一个错误。

  1. 在同一二进制文件上,XC 10上的多次运行之间的覆盖率不同。就像在第一次运行中一样,它在另一次运行中显示x%vs,它将显示y%保持相同的代码。
  2. 覆盖率/测试次数在11.4模拟器和12.0模拟器上运行时有所不同,两者都在XC 10上运行
  3. 测试数量也有点不同,比如在某些运行中它是5507测试,而在某些运行中它是5506。

XC 10肯定带来了很多错误。


0
投票

取出断点并运行测试。测试完成后,覆盖率信息应该会发生变化。

© www.soinside.com 2019 - 2024. All rights reserved.