Отчет Cobertura имеет 100% покрытие в любом месте

#jetty #integration-testing #cobertura

#jetty #интеграция-тестирование #cobertura

Вопрос:

Я запускаю свое веб-приложение с помощью Jetty с моими инструментальными классами. После завершения работы Jetty я беру сгенерированный файл .set и создаю отчет cobertura с помощью инструмента командной строки.

Я всегда получаю результаты 100% покрытия для любого класса. Похоже, что Cobertura учитывает только строки, которые были выполнены во время тестирования, и не получает полные данные класса.

Я пытался добавить исходные файлы в отчеты — без помощи. Я также попытался взять файл .ser, созданный после инструментирования, и объединить его с .файл ser, созданный после завершения работы Jetty (на самом деле это тот же файл, но перед запуском Jetty я создал резервную копию файла .ser, который был создан после инструментирования) — здесь тоже ничего не помогает.

Кто-нибудь, пожалуйста, может помочь??

Спасибо

Ответ №1:

100% охват является четким показателем того, что в отчете отсутствуют источники. Вы должны проверить свою конфигурацию для создания отчета.

Убедитесь, что:

  • вы предоставляете правильную папку
  • исходная папка структурирована так же, как пакеты, а не только все классы в одном каталоге

Комментарии:

1. Спасибо — я исправил путь к исходной папке (он был неправильным), и теперь я могу видеть исходный код в отчетах! Но все равно покрытие везде составляет 100% (и вы видите в исходном коде, что на самом деле это не так)

2. Хорошо, проблема найдена! Поскольку мы выполнили весь процесс вручную, кажется, что мы случайно инструментировали уже инструментированные классы.. Я предполагаю, что это сбило Cobertura с толку (исходный код больше не соответствовал) и генерировало неправильные отчеты.. Спасибо!

Ответ №2:

Как объяснено на http://cobertura.sourceforge.net/faq.html в ответе на вопрос «Когда я создаю отчеты о покрытии, почему они всегда показывают 100% покрытие везде?«,

«Вероятно, Cobertura использует неправильный файл .ser при создании отчетов. При инструментировании ваших классов Cobertura генерирует файл .ser, содержащий основную информацию о каждом классе. По мере выполнения ваших тестов Cobertura добавляет дополнительную информацию в этот же файл данных. Если инструментальные классы не могут найти файл данных при запуске, они создадут новый. Важно, чтобы вы использовали один и тот же файл cobertura.ser при инструментировании, запуске и генерации отчетов.»

В моем случае я столкнулся с этой проблемой, когда инструментальные классы были в одном .ser, а во время выполнения я генерировал другой .ser. Генерация HTML-отчета «только» из second .ser показала проблему, упомянутую в вопросе. Объединение двух файлов данных (.ser) и повторное создание отчета решили проблему.

Обратитесь к http://cobertura.sourceforge.net/commandlinereference.html для информации «Объединение файлов данных».