Я столкнулся с той же проблемой, поэтому потратил немного времени, чтобы проанализировать ответ, пожертвовав его переполнению стека.
Для каждого заявления Java assert
Cobertura отслеживает два условия:
- Был ли данный оператор утверждения выполнен с включенной или отключенной проверкой утверждений.
- Действительно ли предикат оценивается как истинный или ложный.
Таким образом, возможны четыре исхода. Информация предоставлена
для данной строки в отчете HTML состоит из
- результат для условия 1 (0-2 возможности, взятые из 2, адресация выполнения с включенной или отключенной проверкой),
- и результат для условия 2 (0-2 возможностей, взятых из 2: утверждение подтверждено или не выполнено).
- общий результат (0-4 из 4),
Типичные сценарии:
Запуск Cobertura один раз с проверкой утверждений отключен .
Вы получите:
Включено / выключено: 50% (отключено);
Выполнено / не выполнено: 0% (не достигнуто); Следовательно, в целом 25%.
Cobertura сообщит об этом как
Conditional coverage 25% (1/4) [each condition 50%, 0%]
Запуск Cobertura один раз, с проверкой утверждений включен .
Как правило, ваши утверждения всегда верны, поэтому вы получите:
Включено / выключено: 50% (включено);
Пройдено / не выполнено: 50% (всегда верно); Следовательно, в целом: 50%.
Запуск Cobertura дважды, один раз с проверкой утверждений
включен, и один раз без.
Предполагая, что утверждения всегда верны, мы получаем:
Включено / выключено: 100% (как включено, так и отключено);
Пройдено / не выполнено: 50% (всегда верно); Следовательно, в целом 75%.
Тогда, если мы добавим тестовые случаи, которые гарантируют, что данное утверждение
выходит из строя по крайней мере один раз, и проходит по крайней мере один раз, мы получаем
все цифры на 100%.
Обратите внимание, что если вы используете утверждения в стиле дизайна по контракту,
вы вообще не сможете заставить их потерпеть неудачу,
см. ответ на другой вопрос о переполнении стека, покрытие Cobertura и ключевое слово assert .
Наконец: хотя эти цифры объяснимы, я не уверен, что они очень полезны. Я бы предпочел, чтобы в общих отчетах пропускалось освещение, связанное с утверждениями. Clover может сделать это, но я не знаю инструмента анализа покрытия с открытым исходным кодом с этой замечательной функцией.