Как исключить классы из расчета покрытия в EclEmma, ​​фактически не исключая их из самого покрытия

Я использую EclEmma для проверки охвата моих тестов сценариев и использования тестов сценариев в моем проекте. У меня есть базовый пакет, который содержит самые общие классы и тесты вариантов использования. Покрытие выглядит так:

Кодовое покрытие в нашем проекте

Я хочу исключить тесты вариантов использования (например, BugRe portTest) из расчета покрытия. Но я хочу, чтобы тесты внутри него были рассмотрены. Я знаю, как исключить весь класс из покрытия, но если я это сделаю, мой процент покрытия упадет, потому что фактические тесты, которые проверяют, какие строки моего кода тестируются, забываются. Эти тесты вариантов использования должны оставаться в базовом пакете из соображений конфиденциальности.

1 ответ

Решение

По техническим причинам может быть необходимо исключить определенные классы из анализа покрытия кода. Следующие параметры настраивают агент покрытия для исключения определенных классов из анализа. За исключением оптимизации производительности или технических случаев, эти опции обычно не требуются.

  1. Исключает: список имен классов, которые следует исключить из анализа выполнения. Записи списка разделены colon (:)и может использовать wildcard characters (* and ?). (Default: empty)

  2. Исключить загрузчики классов: список имен загрузчиков классов, которые следует исключить из анализа выполнения. Записи списка разделены colon (:) и может использовать wildcard characters (* and ?), Эта опция может потребоваться в случае специальных платформ, конфликтующих с инструментарием кода JaCoCo, в частности загрузчиков классов, которые не имеют доступа к классам времени выполнения Java. (Default: sun.reflect.DelegatingClassLoader)

Предупреждение: используйте эти параметры с осторожностью! Неправильные записи могут нарушить запуск кода покрытия. Также не используйте эти параметры для определения объема вашего анализа. Исключенные классы по-прежнему будут отображаться как не охваченные.

Ссылка на ресурс:

  1. Настройки покрытия кода EclEmma

Все следующие примеры определяют один и тот же набор шаблонов включения / исключения:

  1. <filter includes="com.foo.*" excludes="com.foo.test.*, com.foo.*Test*" />
  2. <filter includes="com.foo.*" /> <filter excludes="com.foo.test.*, com.foo.*Test*" />
  3. <filter value="+com.foo.*, -com.foo.test.*, -com.foo.*Test*" />
    <filter excludes="com.foo.*Test*" file="myfilters.txt" />
    где файл myfilters.txt содержит следующие строки:

    -com.foo.test.* +com.foo.*

Ссылка на ресурс:

  1. Фильтры покрытия
  2. Я уверен, что все мои классы построены с -g(debug='true'), и тем не менее EMMA все еще жалуется на отсутствие отладочной информации!

Игнорировать покрытие кода для модульных тестов в EclEmma

Preferences->Java->Code Coverage и установить "Only path entries matching" возможность src/main/java - кажется, работает хорошо

Другие вопросы по тегам