Как исключить классы из расчета покрытия в EclEmma, фактически не исключая их из самого покрытия
Я использую EclEmma для проверки охвата моих тестов сценариев и использования тестов сценариев в моем проекте. У меня есть базовый пакет, который содержит самые общие классы и тесты вариантов использования. Покрытие выглядит так:
Я хочу исключить тесты вариантов использования (например, BugRe portTest) из расчета покрытия. Но я хочу, чтобы тесты внутри него были рассмотрены. Я знаю, как исключить весь класс из покрытия, но если я это сделаю, мой процент покрытия упадет, потому что фактические тесты, которые проверяют, какие строки моего кода тестируются, забываются. Эти тесты вариантов использования должны оставаться в базовом пакете из соображений конфиденциальности.
1 ответ
По техническим причинам может быть необходимо исключить определенные классы из анализа покрытия кода. Следующие параметры настраивают агент покрытия для исключения определенных классов из анализа. За исключением оптимизации производительности или технических случаев, эти опции обычно не требуются.
Исключает: список имен классов, которые следует исключить из анализа выполнения. Записи списка разделены
colon (:)
и может использоватьwildcard characters (* and ?). (Default: empty)
Исключить загрузчики классов: список имен загрузчиков классов, которые следует исключить из анализа выполнения. Записи списка разделены
colon (:)
и может использоватьwildcard characters (* and ?)
, Эта опция может потребоваться в случае специальных платформ, конфликтующих с инструментарием кода JaCoCo, в частности загрузчиков классов, которые не имеют доступа к классам времени выполнения Java.(Default: sun.reflect.DelegatingClassLoader)
Предупреждение: используйте эти параметры с осторожностью! Неправильные записи могут нарушить запуск кода покрытия. Также не используйте эти параметры для определения объема вашего анализа. Исключенные классы по-прежнему будут отображаться как не охваченные.
Ссылка на ресурс:
Все следующие примеры определяют один и тот же набор шаблонов включения / исключения:
<filter includes="com.foo.*" excludes="com.foo.test.*, com.foo.*Test*" />
<filter includes="com.foo.*" /> <filter excludes="com.foo.test.*, com.foo.*Test*" />
<filter value="+com.foo.*, -com.foo.test.*, -com.foo.*Test*" />
где файл myfilters.txt содержит следующие строки:
<filter excludes="com.foo.*Test*" file="myfilters.txt" />-com.foo.test.* +com.foo.*
Ссылка на ресурс:
- Фильтры покрытия
- Я уверен, что все мои классы построены с -g(debug='true'), и тем не менее EMMA все еще жалуется на отсутствие отладочной информации!
Игнорировать покрытие кода для модульных тестов в EclEmma
Preferences->Java->Code Coverage
и установить "Only path entries matching"
возможность src/main/java
- кажется, работает хорошо