Создание покрытия кода с помощью JaCoCo и плагина spring-boot-maven

Саймон Мартинелли:

Во время интеграционных тестов я использую spring-boot-maven-plugin для запуска своего весеннего приложения:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <executions>
         <execution>
             <id>start-spring-boot</id>
             <phase>pre-integration-test</phase>
             <goals>
                 <goal>start</goal>
             </goals>
         </execution>
         <execution>
             <id>stop-spring-boot</id>
             <phase>post-integration-test</phase>
             <goals>
                 <goal>stop</goal>
             </goals>
         </execution>
     </executions>
</plugin>

Теперь я хотел бы добавить агент JaCoCo в выполнение, но добавление его в конфигурацию в качестве агента или jvmarguments не сработало. При запуске всегда вижу:

[INFO] --- spring-boot-maven-plugin:2.2.4.RELEASE:start (start-spring-boot) @ tosca-ui ---
[INFO] Attaching agents: []

Как я могу использовать JaCoCo с плагином spring-boot-maven-plugin?

Мацей Валковяк:

По умолчанию плагин Spring Boot Maven создает вилку, и конфигурация агента должна быть явно указана. Это можно сделать, установив <agents><agent>...</agent></agents>свойство конфигурации в плагине Spring Boot Maven, НО это не работает с Jacoco, поскольку нет идиоматического способа узнать, каков точный путь к файлу jar агента.

Вместо этого вы можете передать argLineпеременную, установленную Jacoco, в аргументы JVM плагина Spring Boot Maven:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <jvmArguments>${argLine}</jvmArguments>
    </configuration>
    <executions>
        <execution>
            <id>start-spring-boot</id>
            <phase>pre-integration-test</phase>
            <goals>
                <goal>start</goal>
            </goals>
        </execution>
        <execution>
            <id>stop-spring-boot</id>
            <phase>post-integration-test</phase>
            <goals>
                <goal>stop</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Поскольку для его работы необходимо настроить несколько плагинов Maven, просто чтобы избежать путаницы, вот полный pom.xmlфайл:

    <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>jacoco-spring-boot-maven</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>jacoco-spring-boot-maven</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>11</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <jvmArguments>${argLine}</jvmArguments>
                </configuration>
                <executions>
                    <execution>
                        <id>start-spring-boot</id>
                        <phase>pre-integration-test</phase>
                        <goals>
                            <goal>start</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>stop-spring-boot</id>
                        <phase>post-integration-test</phase>
                        <goals>
                            <goal>stop</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>3.0.0-M4</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.5</version>
                <executions>
                    <execution>
                        <id>default-prepare-agent</id>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>default-report</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

При этом, как только вы выполните, mvn clean verifyвы сможете найти отчеты Jacoco в формате target/site/jacoco/index.html.

Вы можете найти полный образец проекта на jacoco-spring-boot-maven-plugin-sample

Эта статья взята из Интернета, укажите источник при перепечатке.

Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.

Отредактировано в
0

я говорю два предложения

0обзор
Войти в системуУчаствуйте в комментариях

Статьи по теме

Плагин Spring Boot Maven - spring -boot: запуск и плавное завершение работы

Maven / Jacoco - как получить объединенный отчет после успешных тестов и слияния файлов данных jacoco?

Конфигурация Maven Jacoco для многомодульных проектов

Можно ли запускать плагин JaCoCo maven только во время жизненного цикла сайта?

Покрытие кода в сборке maven - Пропуск выполнения JaCoCo из-за отсутствия каталога классов

Охват многомодульного проекта Jacoco Maven

maven jacoco: не генерируется отчет о покрытии кода

Проблемы с настройкой JaCoCo в Maven

JaCoCo с Maven - отсутствует файл данных исполнения

Конфигурация Maven Jacoco - исключить классы / пакеты из отчета, не работающего

Maven Jacoco - многомодульный проект. Какая самая простая (централизованная?) Настройка?

Создание отчета о покрытии кода JaCoCo с помощью Maven

Как проверить минимальное покрытие кода для многомодульного проекта maven с помощью jacoco?

Как указать формат вывода для плагина jacoco для maven?

Плагин Spring Boot Maven включает ресурсы

Как можно включить ресурсы из другого модуля в многомодульный проект Spring Boot Maven

Spring Boot, Gradle и зависимости не от Maven

Плагин Spring Boot Maven: что он на самом деле делает?

Невозможно пропустить цель переупаковки плагина spring-boot-maven

Spring-boot Maven: как создать исполняемую банку с основным классом?

Spring Boot многомодульный проект Maven @Autowired не работает

Использование Spring Boot без Maven

Как создать / найти банку приложения для развертывания приложения Spring Boot Maven с использованием встроенного tomcat?

Maven проверяет ClassNotFoundException для класса приложения Spring Boot

Как протестировать проект модуля Maven с помощью Spring Boot

Maven spring-boot: цель запуска: упростить командную строку

Spring Boot, Maven, отключите конкретный RestController в производном проекте

Приложение Spring Boot не запускается с Maven & Karate

Как интегрировать профиль Spring Boot с профилем Maven?

TOP список

  1. 1

    Распределение Рэлея Curve_fit на Python

  2. 2

    TypeError: store.getState não é uma função. (Em 'store.getState ()', 'store.getState' é indefinido, como posso resolver esse problema?

  3. 3

    В типе Observable <unknown> отсутствуют следующие свойства из типа Promise <any>.

  4. 4

    Как добавить Swagger в веб-API с поддержкой OData, работающий на ASP.NET Core 3.1

  5. 5

    How to click an array of links in puppeteer?

  6. 6

    Merging legends in plotly subplot

  7. 7

    ViewPager2 мигает / перезагружается при смахивании

  8. 8

    Отчеты Fabric Debug Craslytic: регистрация, отсутствует идентификатор сборки, применить плагин: io.fabric

  9. 9

    How to normalize different curves drawn with geom = "step" when using stat_summary

  10. 10

    无法通过Vue在传单中加载pixiOverlay

  11. 11

    как я могу удалить vue cli 2?

  12. 12

    Как я могу нарисовать заполненный прямоугольник в JFreeChart?

  13. 13

    SQL Вычтите две строки друг от друга в одном столбце, чтобы получить результат

  14. 14

    Elasticsearch - Нечеткий поиск не дает предложения

  15. 15

    Single legend for Plotly subplot for line plots created from two data frames in R

  16. 16

    Описание моего типа Parser как серии преобразователей монад

  17. 17

    Как изменить цвета запятых и скобок в VS Code

  18. 18

    Сброс значения <input type = "time"> в Firefox

  19. 19

    Почему прокси в vue.config.js 404

  20. 20

    Как установить параметр -noverify с gradle ktx для робоэлектрических тестов Android?

  21. 21

    В чем разница между ifstream, ofstream и fstream?

популярныйтег

файл