#ios #swift #code-coverage #test-coverage #xcode13
Вопрос:
Я обновился до Xcode 13 и заметил , что в отчете о покрытии не учитываются некоторые строки, такие как guard
??
оператор, фигурные скобки…
Это привело к значительному снижению общего охвата без каких-либо изменений. Кто-нибудь сталкивается с этой проблемой? Есть ли какое-то решение?
Комментарии:
1. Я понимаю это, но в предыдущей версии он рассматривался как покрытый, а в xCode он был показан красными/белыми полосами, показывая, что он не полностью покрыт. Кроме того, я выполнил тест, и, используя тернарный оператор, он отображается как покрытый, даже если не выполняются оба условия, например
let a = b ? 1 : 0
Ответ №1:
Я могу подтвердить поведение, которое вы описываете.
В Xcode 12.5.1:
Это правильно показывает, что оба этих метода имеют только частичное покрытие (когда, конечно, вы тестируете только один путь выполнения).
Но Xcode 13.0 не предполагает покрытия для этого nil
сценария объединения, даже если он действительно частично покрыт:
Очевидно, что следует попытаться протестировать оба сценария, чтобы обеспечить полное покрытие (и в этот момент Xcode 13 правильно укажет на это), но в некоторых случаях это может показаться ошибкой при отображении частичного покрытия в Xcode 13.0.
Комментарии:
1. Я не думаю, что это только рендеринг, потому что я использую slather (с profdata) для создания отчета cobertura для интеграции с сонаром, и он также не показывает линии, покрытые. Это привело к значительному снижению охвата в моем проекте, даже жесткие линии, по крайней мере, частично покрыты