Я не могу понять, как Cobertura сотрудничает с JUnit. Как я понял, cobertura модифицирует скомпилированный байт-код и вставляет в этот байтовый код свои собственные команды. ОК. После этого мы запускаем структуру Junit и проводим тесты для запуска. Может ли кто-нибудь объяснить, в каких точках cobertura получает информацию, какая из ее команд была выполнена?
Как работает Cobertura с JUnit?
Ответ 1
Cobertura использует ASM, который является основой управления и анализа байт-кода общего назначения. В каждой строке кода Java есть 3 строки, добавленные к существующим классам, чтобы подсчитывать данные для создаваемого отчета. Когда Cobertura включен в ваш путь к классам и настроен правильно, и вы выполняете свои модульные тесты, он будет генерировать файл данных, называемый cobertura.ser, который используется для создания отчета xml или html.
Основное использование: с Maven: http://www.mojohaus.org/cobertura-maven-plugin/usage.html
Ответ 2
Cobertura контролирует тесты, применяя байт-код с дополнительными инструкциями для регистрации, какие строки являются и не достигаются по мере выполнения набора тестов.
Cobertura рассчитывает покрытие как по количеству тестируемых линий, так и по количеству тестируемых ветвей. Для первого прохода разница между этими двумя не очень важна. Cobertura также вычисляет среднюю циклическую сложность McCabe для класса.
При использовании maven это можно настроить в POM:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.6</version>
<configuration>
<formats>
<format>html</format>
<format>xml</format>
</formats>
</configuration>
</plugin>
При использовании ANT его можно настроить с помощью оператора taskdef
в файле build.xml:
<taskdef classpathref="cobertura.classpath" resource="tasks.properties"/>
Ссылка для интеграции ant -колберура может быть найдена в https://github.com/cobertura/cobertura/wiki/Ant-Task-Reference