Почему эта линия не покрыта?Покрытие кода Xcode - PullRequest
5 голосов
/ 20 марта 2019

У меня возникла проблема с отчетом о покрытии кода в Xcode. Как вы можете видеть на скриншоте:

enter image description here

На левой вкладке строка 58 «касается» точки останова, а на правой вкладке тест проходит. На правой вкладке я запускаю только тест в строке 37.

Почему Xcode подписывает строку 58 красным цветом, а не покрытую?

Строка 53 не "трогается" (если я установлю точку останова). Использование SQLite в качестве базы данных.

Весь проект доступен здесь .

РЕДАКТИРОВАТЬ : добавление кода:

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 ]

3 голосов
/ 02 апреля 2019

На самом деле это ошибка, о которой сообщается здесь .

  1. Число покрытия варьируется между несколькими прогонами на XC 10 в одном и том же двоичном файле.Как и при первом запуске, он показывает x% против другого, при этом он показывает y%, сохраняя тот же код.
  2. Число покрытия / Количество тестов варьируется при работе на симуляторе 11.4 и на симуляторе 12.0, оба выполнялись на XC 10
  3. Количество тестов также немного отличается, например, в некоторых прогонах было 5507 тестов, в то время как в некоторых запусках было 5506.

XC 10 определенно содержит множество ошибок.

0 голосов
/ 20 марта 2019

Выведите точку останова и запустите тест.После завершения теста информация о покрытии должна измениться.

...