2016-03-24 3 views
1

Я использую Spring JavaConfig для определения моей конфигурации Spring. Поскольку в модульных тестах используется другая конфигурация Spring, чем производственный код, конфигурация производства отображается на 100% непокрытой, когда я использую покрытие кода Clover с модульными тестами.Глобально исключить все Spring JavaConfig из покрытия кода клевера

Я могу использовать аннотацию @Configuration, чтобы идентифицировать все эти классы. В качестве альтернативы, я могу использовать аннотацию @Bean, чтобы идентифицировать все методы в этих классах.

Есть ли клевер exclude или контекстный фильтр кода, который я могу настроить для глобального исключения кода, используя эти аннотации? Я использую maven-clover2-plugin для запуска Clover.

+0

Согласно https://confluence.atlassian.com/display/CLOVER/Configuring+instrumentation (Раздел «Настройка контекстов кода») кажется, что вы можете исключить только методов или утверждений. Я не вижу возможности для классов. –

+0

@WimDeblauwe, правильно, но, возможно, есть способ сделать это с помощью аннотации '@ Bean' на уровне метода. Я отредактировал мой вопрос, чтобы добавить это. – metacubed

ответ

0

На данный момент Clover позволяет исключить код из измерения покрытия с использованием пяти методов:

  1. исключающие весь файл

    • в Ant это < клеверного установки>/< набор файлов>/< исключает> тег
    • в Maven < исключает>, < исключаетFile> или < исключает список_пользователя
  2. исключая некоторые методы

    • в Ant это < клеверного установки>/< MethodContext> тег в сочетании с клевером-отчета <>/< ток>/<
    • в Maven так ли недоступен напрямую - вам нужно будет использовать параметр < reportDescriptor> для настройки формата отчета во внешнем XML-файле; проблема с клевером-установки, которые вы также должны настроить - возможно, вызывая Клевер может помочь здесь
  3. за исключением некоторых заявлений

    • в Ant это < с помощью Maven-antrun-плагин клевер-установки>/< statementContext> тег в сочетании с клевером-отчета <>/< ток>/<
    • в Maven вам придется использовать < ReportDescriptor>
  4. за исключением некоторых блоков кода

    • в Ant это < клеверного отчет>/< ток>/< с предопределенными именами блоков, например'Конструктор' или 'выключатель' - в разделе Использование + Покрытие + контексты для получения более подробной информации в Maven
    • вы должны использовать < ReportDescriptor>
  5. за исключением произвольных исходных линий

Вы можете поставить // КЛЕВЕР: OFF и // КЛЕВЕР: ON встроенных комментариев в исходном коде

к сожалению, в в тот момент, когда невозможно исключить данный класс. Тем не менее, я могу видеть несколько обходных путей доступны:

  1. Добавить // Clover: OFF и // Clover: ON комментария вокруг классов, которые вы хотите исключить.

  2. Исключить файлы целиком

  3. Лечить эти @Configuration классы в качестве тест-кода.

Это взломать. Clover позволяет объявлять, какие классы являются тестовыми классами. Матч основан на имени файла, подписи класса и тестовой подписи. См. Тезисы < clover-setup>/< testources>/< testclass>. В этом теге testclass вы можете определить регулярное выражение, соответствующее всей сигнатуре класса. В вашем случае это может быть:

<testclass annotation=".*@Configuration.*"/> 

Хотя это не отключит кода приборов для этих классов, они будут рассматриваться в качестве тестового кода, и они не должны вносить свой вклад в метриках кода приложения.

Обратите внимание, что Clover вычисляет метрики кода для приложения и тестового кода отдельно.

Список литературы:

Смежные вопросы