Я интегрировал Pitest в соответствии с https://pitest.org/aggregating_tests_across_modules/ в проекте модуля Maven (Maven версия 3.5.4).
При запуске mvn clean package
журнал показывает выполнение Pitest для цели модули (т. е. модули, для которых должен выполняться Pitest), и я подтвердил, что файлы результатов действительно создаются.
Однако я получаю следующее сообщение об ошибке для модуля отчета:
[ERROR] Failed to execute goal org.pitest:pitest-maven:1.5.1:report-aggregate (put-it-together) on project mutationtesting:
An error has occurred in PIT Test Report report generation.:
.../.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.10.0/jackson-databind-2.10.0.jar is not a directory
jackson-databind
является зависимостью целевых модулей и, следовательно, транзитивной зависимостью модуля отчетности. Мне кажется, что цель report-aggregate
также пытается проанализировать транзитивные зависимости модулей, для которых включен Pitest.
Есть ли какая-то ошибка в конфигурации проекта? Это известная ошибка? Что я могу сделать?
Я попытался изменить область действия целевых модулей в модуле отчетности на предоставленную, а также установил упаковку модуля отчетности на pom, но безрезультатно.
Конфигурация
Я настроил Pitest в родительском POM следующим образом:
<properties>
...
<pitest.version>1.5.1</pitest.version>
<pitest.junit5.version>0.12</pitest.junit5.version>
<properties>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.pitest</groupId>
<artifactId>pitest-maven</artifactId>
<version>${pitest.version}</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>mutationCoverage</goal>
</goals>
</execution>
</executions>
<configuration>
<exportLineCoverage>true</exportLineCoverage>
<outputFormats>
<value>XML</value>
</outputFormats>
<timestampedReports>false</timestampedReports>
</configuration>
<dependencies>
<dependency>
<groupId>org.pitest</groupId>
<artifactId>pitest-junit5-plugin</artifactId>
<version>${pitest.junit5.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</pluginManagement>
Каждый POM целевого модуля содержит этот раздел:
<build>
<plugins>
<plugin>
<groupId>org.pitest</groupId>
<artifactId>pitest-maven</artifactId>
</plugin>
</plugins>
</build>
И, наконец, модуль отчетности POM выглядит следующим образом
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
...
</parent>
<artifactId>mutationtesting</artifactId>
<dependencies>
<dependency>
target module 1
</dependency>
<dependency>
target module 2
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.pitest</groupId>
<artifactId>pitest-maven</artifactId>
<executions>
<execution>
<id>put-it-together</id>
<goals>
<goal>report-aggregate</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>