Инструменты покрытия кода Java бывают двух типов: во-первых, инструменты, которые добавляют операторы в исходный код Java и требуют его перекомпиляции. Во-вторых, инструменты, которые инструментируют байт-код , либо до, либо во время выполнения. Цель состоит в том, чтобы выяснить, какие части кода тестируются, регистрируя строки кода, выполняемые при запуске теста.
Разработчик(и) | Марк Хоффманн, Брок Яничак, Евгений Мандриков, Мирко Фриденхаген |
---|---|
Стабильный релиз | 0.8.12 / 31 марта 2024 г. ( 2024-03-31 ) |
Тип | Покрытие кода |
Лицензия | АПЛ |
Веб-сайт | www.jacoco.org/jacoco |
JaCoCo — это набор инструментов с открытым исходным кодом для измерения и составления отчетов о покрытии кода Java . JaCoCo распространяется на условиях Eclipse Public License . Он был разработан в качестве замены EMMA [1] под эгидой подключаемого модуля EclEmma для Eclipse.
JaCoCo предлагает инструкции, покрытие линий и отделений.
В отличие от Atlassian Clover и OpenClover, которые требуют инструментирования исходного кода, JaCoCo может инструментировать байт-код Java, используя два разных подхода:
И может быть настроен для хранения собранных данных в файле или отправки их по TCP. Файлы из нескольких запусков или частей кода можно легко объединить. [3] В отличие от Cobertura и EMMA он полностью поддерживает Java 7, Java 8, [4] Java 9, Java 10, Java 11, Java 12, Java 13, Java 14, Java 15, Java 16, Java 17, Java 18, Java 19 и Java 20.
Разработчик(и) | Леонид Арбузов, Александр Петров, Владимир Генералов, Сергей Чухонцев, Олег Ульянкин, Григорий Стойк, Павел Ождихин, Константин Бобровский, Роберт Филд, Александр Кузьмин, Леонид Месник, Сергей Бородин, Андрей Титов, Дмитрий Фазуненко, Алексей Федорченко, Леонид Кусков |
---|---|
Стабильный релиз | 3.0 / 1 сентября 2014 г. ( 2014-09-01 ) |
Тип | Покрытие кода |
Лицензия | GPL v2 (с исключением Classpath) |
Веб-сайт | wiki.openjdk.java.net/display/CodeTools/jcov |
JCov — это инструмент, который был разработан и использовался с Sun JDK (а позже и Oracle JDK) с самого начала Java: с версии 1.1. JCov способен измерять и сообщать покрытие кода Java . JCov распространяется на условиях GNU General Public License (версия 2, с исключением Classpath). JCov стал открытым исходным кодом как часть проекта инструментов кода OpenJDK в 2014 году.
JCov способен сообщать о следующих типах покрытия кода:
JCov реализует два различных способа сохранения собранных данных:
JCov работает, инструментируя байт-код Java, используя два разных подхода:
У JCov есть еще несколько отличительных особенностей, которые включают в себя, но не ограничиваются:
Разработчик(и) | Марек Парфянович, Гжегож Левандовски |
---|---|
Стабильный релиз | 4.5.2 / 31 января 2024 г. ( 2024-01-31 ) |
Тип | Покрытие кода |
Лицензия | Лицензия Apache 2.0 |
Веб-сайт | openclover.org |
OpenClover — это бесплатный и открытый преемник Atlassian Clover, созданный как ответвление от кодовой базы Clover, опубликованной Atlassian в 2017 году. Он содержит все функции оригинального Clover (серверной версии). Проект OpenClover возглавляют разработчики, которые поддерживали Clover в 2012–2017 годах. [15]
OpenClover использует технику инструментирования исходного кода и обрабатывает языки Java, Groovy и AspectJ . Некоторые из его функций включают: точный контроль над измерением охвата покрытия, оптимизацию тестирования и сложные отчеты.
OpenClover интегрируется с Ant , Maven , Gradle , Grails , Eclipse , IntelliJ IDEA , Bamboo , Jenkins , Hudson , Griffon , SonarQube и AspectJ.
Разработчик(и) | JetBrains |
---|---|
Тип | Покрытие кода |
Лицензия | Апач 2.0 |
Веб-сайт | github.com/JetBrains/intellij-coverage |
IntelliJ IDEA Code Coverage Agent — это инструмент покрытия кода, интегрированный в IntelliJ IDEA IDE и сервер TeamCity CI. Он поддерживает покрытие ветвей и отслеживание покрытия по тестам.
Разработчик(и) | Технология Verifysoft |
---|---|
Стабильный релиз | 8.0. / 30 июня 2016 г. ( 2016-06-30 ) |
Тип | Покрытие кода |
Лицензия | Запатентованный |
Веб-сайт | verifysoft.com/en_ctcpp.html |
Testwell CTC++ — это инструмент покрытия кода для C , C++ , Java и C# . Разработка этого инструмента началась в 1989 году в Testwell в Финляндии. С 2013 года поддержка и разработка продолжаются Verifysoft Technology, компанией из Оффенбурга , Германия . Testwell CTC++ анализирует все уровни покрытия кода вплоть до Modified condition/decision coverage и Multicondition Coverage. [16] Инструмент работает со всеми компиляторами . [17]
Разработчик(и) | Атлассиан |
---|---|
Стабильный релиз | 4.1.2 / 11 октября 2016 г. ( 2016-10-11 ) |
Тип | Покрытие кода |
Лицензия | Апач 2.0 |
Веб-сайт | atlassian.com |
Clover — это утилита анализа покрытия кода Java , купленная и доработанная Atlassian . В апреле 2017 года Atlassian объявила об окончании поддержки Clover и одновременно открыла его исходный код под лицензией Apache 2.0.
Clover использует технику инструментирования исходного кода (в отличие от Cobertura и JaCoCo, которые используют инструментирование байт-кода), что имеет свои преимущества (например, возможность сбора метрик кода) и недостатки (необходима повторная компиляция исходников). [18] Некоторые из его функций включают историческую отчетность, огромный контроль над процессом сбора покрытия, набор инструментов командной строки и API для устаревшей интеграции и многое другое.
Clover также позволяет сократить время тестирования, запуская только те тесты, которые покрывают код приложения, измененный с момента предыдущей сборки. Это называется оптимизацией тестов [19] и может привести к значительному сокращению времени ожидания завершения автоматизированных тестов.
Clover поставляется с рядом интеграций, разработанных как Atlassian (Ant, Maven, Grails, Eclipse, IDEA, Bamboo), так и сообществом разработчиков ПО с открытым исходным кодом (Gradle, Griffon, Jenkins, Hudson, Sonar).
В апреле 2017 года компания Atlassian объявила, что больше не будет выпускать новые версии Clover после версии 4.1.2, а ее код стал доступен как программное обеспечение с открытым исходным кодом, размещенное на Bitbucket . [20] [21]
Разработчик(и) | Стивен Христу |
---|---|
Стабильный релиз | 2.1.1 / 26 февраля 2015 г. ( 2015-02-26 ) |
Репозиторий | github.com/cobertura/cobertura |
Тип | Покрытие кода |
Лицензия | Лицензия GPL 2.0 |
Веб-сайт | cobertura.github.io/cobertura/ |
Cobertura — это инструмент с открытым исходным кодом для измерения покрытия кода. Он делает это, инструментируя байт-код. Он был предшественником JaCoCo.
Разработчик(и) | Влад Рубцов |
---|---|
Стабильный релиз | 2.1 / 13 мая 2005 г. ( 2005-05-13 ) |
Репозиторий | sourceforge.net/projects/emma/ |
Тип | Покрытие кода |
Лицензия | Общая публичная лицензия 1.0 |
Веб-сайт | emma.sourceforge.net |
EMMA — это набор инструментов с открытым исходным кодом для измерения и составления отчетов о покрытии кода Java . EMMA распространяется на условиях Common Public License v1.0.
В настоящее время EMMA не находится в стадии активной разработки; последний стабильный релиз состоялся в середине 2005 года. В качестве замены был разработан JaCoCo. [22] EMMA работает, оборачивая каждую строку кода и каждое условие флагом, который устанавливается при выполнении этой строки. [23]
.class
файлы или целые .jars
(на месте, если необходимо). Эффективная фильтрация подмножества покрытия также возможна.Разработчик(и) | Майкл Коук |
---|---|
Стабильный релиз | 1.0 / 8 декабря 2013 г. ( 2013-12-08 ) |
Тип | Покрытие кода |
Лицензия | Лицензия на программное обеспечение Apache версии 2.0 |
Веб-сайт | wiki.jenkins-ci.org/display/JENKINS/Serenity+Plugin |
Serenity — это инструмент с открытым исходным кодом , создающий более автоматизированные приемочные тесты программного обеспечения за меньшее время. Он измеряет и сообщает покрытие кода Java . Он также создает понятные отчеты, описывающие, что делает приложение и как оно работает, включая то, какие тесты были запущены и какие требования были выполнены. Он работает с инструментами Selenium WebDriver, Appium и BDD.
Измеряются основные метрики кода, такие как циклометрическая сложность , стабильность, абстрактность и расстояние от основного. Данные отчета сохраняются в объектной базе данных и предоставляются через Jenkins/Hudson. Интерфейс визуально повторяет интерфейс Eclipse IDE.
Serenity динамически улучшает байт-код, делая ненужным шаг посткомпиляции. Поддерживаются проекты Ant и Maven. Конфигурация выполняется в xml, пример Ant будет таким:
<!-- Свойства системы Serenity. --> <sysproperty key= "included.packages" value= "your.package.name.here" /> <sysproperty key= "included.adapters" value= "coverage,complexity,dependency" /> <!-- Командная строка Serenity JVM. --> <jvmarg line= "-javaagent:serenity/serenity.jar" />
А пример конфигурации Maven будет таким:
<properties> <included.packages> -Dincluded.packages=ваше.имя.пакета.здесь </included.packages> <included.adapters> -Dincluded.adapters=охват,сложность,зависимость </included.adapters> </properties> <argLine> -javaagent:serenity/serenity.jar -Xms512m -Xmx1024m ${included.packages} ${included.adapters} </argLine>
Полный пример конфигурации можно найти на вики-странице Jenkins по адресу https://wiki.jenkins-ci.org/display/JENKINS/Serenity+Plugin.
Поддерживаются подчиненные проекты Jenkins, а также многомодульные проекты Maven.