2016-05-24 3 views
4

Я могу получить покрытие кода отлично, если у меня есть один проект, но теперь у меня есть проект с несколькими модулями.Покрытие кода в maven build - Пропуск выполнения JaCoCo из-за отсутствующих классов каталога

Мое приложение построено в проекте api, и все мои интеграционные тесты выполняются в отдельном проекте, который использует артефакт, построенный как предыдущий модуль.

Построенные работает, но я не получаю отчет о покрытии кода, вместо этого я получаю информационное сообщение:

исполнения

Пропуска JaCoCo из-за отсутствующие классы каталогов

Моего отчет охвата файл jacoco-it.exec создается но похоже, что плагин jacoco требует классов в проекте, в которых выполняются тесты.

Может кто-нибудь сказать мне, что мне нужно сделать, чтобы создать отчет о покрытии, когда классы находятся в другом модуле?

ответ

3

Мне удалось получить временное решение, пройдя проб и ошибок.

Кажется, плагин jacoco рад создать файл exec без классов, но он не будет создавать отчет без них, я не понимаю, как работает jacoco внутри, поэтому, если кто-то знает, можете ли вы объяснить это?

Я также не уверен, что то, что я сделал, является надежным, но похоже, что оно сообщает о покрытии моих тестов, вызванных селеном.

Мое (возможное) решение, которое я придумал, - использовать плагин ресурсов maven для копирования классов, которые были взорваны из файла войны в каталоге target \ cargo .. в каталог target \ classes:

<plugin> 
     <artifactId>maven-resources-plugin</artifactId> 
     <version>2.7</version> 
     <executions> 
      <execution> 
      <id>copy-resources</id>    
      <phase>pre-integration-test</phase> 
      <goals> 
       <goal>copy-resources</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>${basedir}/target/classes</outputDirectory> 
       <resources>   
       <resource> 
        <directory>${basedir}/target/cargo/configurations/tomcat7x/webapps/calculator-api/WEB-INF/classes</directory> 
        <filtering>false</filtering> 
        <excludes> 
         <exclude>**/*Config*.*</exclude> 
         <exclude>**/*Initialiser*.*</exclude> 
        </excludes> 
       </resource> 
       </resources>    
      </configuration>    
      </execution> 
     </executions> 
    </plugin> 

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

Кто-нибудь знает, действительно ли это решение, оно «работает», но я не могу найти где-либо в Интернете, где это рекомендуемый подход, и я также не уверен, почему опция exclude для агента jacoco больше не установлена похоже работа.

Мне удалось обойти плагин jacoco, не исключая файлы, просто не копируя их с помощью плагина ресурсов, но я до сих пор не понимаю, как работает jacoco.