Как работает Cobertura с JUnit?

Я не могу понять, как Cobertura сотрудничает с JUnit. Как я понял, cobertura модифицирует скомпилированный байт-код и вставляет в этот байтовый код свои собственные команды. ОК. После этого мы запускаем структуру Junit и проводим тесты для запуска. Может ли кто-нибудь объяснить, в каких точках cobertura получает информацию, какая из ее команд была выполнена?

Ответ 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