Как на самом деле работает JaCoCo для интеграционных тестов в Sonar по сравнению с Cobertura?

Cobertura сначала 1) инструментирует исходные файлы для трассировки и 2) выполняет модульные тесты и сравнивает их с инструментированными классами. Таким образом, мы можем рассчитать покрытие кода.

Однако с JaCoCo для интеграционных тестов (Selenium) я не видел этой фазы «инструментации» в документации. Агент JaCoCo просто настроен на динамическую трассировку исходного кода «на лету» при выполнении тестов. Откуда JaCoCo знает, с каким исходным кодом сравнивать, если код не был предварительно инструментирован, как в Cobertura? Кроме того, что, если я хочу исключить какой-либо исходный код?


person user1340582    schedule 12.12.2012    source источник


Ответы (1)


Действительно, по определению Jacoco обрабатывает весь байт-код Java, но вы можете настроить это поведение с помощью параметров Jacoco 'excludes'/'includes', см. http://www.eclemma.org/jacoco/trunk/doc/agent.html.

person Freddy - SonarSource Team    schedule 12.12.2012
comment
Хм, я все еще в замешательстве. Я понимаю, что Jacoco инструментирует классы, к которым он прикасается (то есть знает о них), но этого, конечно, недостаточно для покрытия кода, поскольку вы, конечно, также хотите знать, какие классы вообще не затрагиваются. Я не понимаю, откуда Jacoco знает о других классах, через загрузчик классов или как? - person user1340582; 12.12.2012
comment
Вы правы, есть два шага, и второй автоматически учитывается Sonar. - person Freddy - SonarSource Team; 12.12.2012
comment
Привет, Фредди. Как Sonar автоматически учитывает второй шаг? У меня есть несколько процентов покрытия кода для некоторых вспомогательных классов, используемых тестами Selenium, но все компоненты Web и Business Logic по какой-то причине равны 0%. Почему Sonar не включает эти источники? Эти источники иначе включены в Sonar... - person user1340582; 18.12.2012