У меня есть странная проблема, по которой я не смог найти причину:
При использовании pitest с maven (и java 11) в командной строке он работает, как и ожидалось, но при запуске его на Jenkins-Сервер через декларативный конвейер приводит к ошибке.
Часть из моего maven pom:
<build>
<plugins>
<plugin>
<groupId>org.pitest</groupId>
<artifactId>pitest-maven</artifactId>
<version>1.4.8</version>
<dependencies>
<dependency>
<groupId>org.pitest</groupId>
<artifactId>pitest-junit5-plugin</artifactId>
<version>0.8</version>
</dependency>
</dependencies>
<configuration>
<verbose>true</verbose>
</configuration>
</plugin>
</plugins>
</build>
Часть из моего Jenkinsfile:
stage('MutationTesting')
{
steps
{
bat 'mvn --batch-mode org.pitest:pitest-maven:mutationCoverage'
}
}
До этого следующий mavenкоманды будут вызываться из конвейера:
mvn - очистка в пакетном режиме
mvn - компиляция в пакетном режиме
mvn - компилятор в пакетном режиме: testCompile surefire: test -Dmaven.test.failure.ignore = true
При вызове именно этих команд в командной строке pitest работает отлично.
При сравнении результатов ведения журнала, затемони почти равны.
Вывод журнала из командной строки:
PIT >> FINE: Максимально доступная память составляет 3609 МБ
PIT >> FINE: MINION: УстановкаPIT агент
PIT >> ИНФОРМАЦИЯ: Отправка 13 тестаклассы для minion
PIT >> ИНФОРМАЦИЯ: Отправленные тесты для minion
PIT >> ИНФОРМАЦИЯ: MINION: 08:51:20 PIT >> FINE: Ожидается 13 тестовых классов от родителя
PIT >> FINE: получены тестовые классы
PIT >> INFO: проверка среды
PIT >> INFO: MINION: 08:51:20 PIT >> INFO: найдено 1 тестов
PIT >> INFO: МИНИОН: 08:51:20 PIT >> INFO: Анализ зависимостей уменьшил количество потенциальных тестов на 0
PIT >> INFO: MINION: 08:51:20PIT >> INFO: получено 1 тестов
PIT >> INFO: MINION: 08:51:20 PIT >> FINE: работает 1 единица
PIT >> INFO: MINION: 08:51: 20 PIT >> FINE: Сбор покрытия для теста Описание [testClass = de.test.Tests, name = creation ()]
PIT >> FINE: Генератор покрытия Миньон вышел нормально
PIT>> ИНФОРМАЦИЯ: Расчетное покрытие за 0 секунд.
PIT >> FINE: Использованная память после расчета покрытия 42 мб
PIT >> FINE: Свободная память после расчета покрытия 201 мb
[... обрезание выходных данных мутаций]
Вывод журнала из Jenkins-Pipeline:
PIT >> FINE: Максимально доступная память составляет 1813mb
PIT >> FINE: MINION: установка агента PIT
PIT >> INFO: отправка 13 тестовых классов в minion
PIT >> INFO: отправка тестов в minion
PIT >> ИНФОРМАЦИЯ: МИНИОН: 08:46:28 PIT >> FINE: ожидается 13 тестовых классов от родителя
PIT >> FINE: тестирует полученные классы
PIT>> ИНФОРМАЦИЯ: Проверка среды
PIT >> ИНФОРМАЦИЯ: MINION: 08:46:29 PIT >> ИНФОРМАЦИЯ: Найдено 1 тестов
PIT >> ИНФОРМАЦИЯ: MINION: 08:46:29 PIT>> ИНФОРМАЦИЯ: Анализ зависимостей уменьшил число потенциальных тестов на 0
PIT >> ИНФОРМАЦИЯ: MINION: 08:46:29 PIT >> ИНФОРМАЦИЯ: получено 1 тестов
PIT >> ИНФОРМАЦИЯ:MINION: 08:46:29 PIT >> FINE: работает 1 единица
PIT >> INFO: MINION: 08:46:29 PIT >> FINE: сбор покрытия для теста Описание [testClass = de.test.Тесты, имя = создание ()]
PIT >> FINE: Генератор покрытия Миньон вышел, ok PIT >> INFO: Расчетное покрытие за 1 секунду.PIT >> FINE: использованная память после расчета покрытия 43 mb PIT >> FINE: свободная память после расчета покрытия 177 mb PIT >> INFO: Создано 0 единиц измерения мутации [INFO] ------------------------------------------------------------------------ [INFO] СБОЙ СТРОИТЕЛЬСТВА [INFO] ------------------------------------------------------------------------ [INFO] Общее время: 3.644 с [INFO]Закончено: 2019-06-06T08: 46: 29 + 02: 00 [ИНФО] ------------------------------------------------------------------------[ОШИБКА] Не удалось выполнить цель org.pitest: pitest-maven: 1.4.8: mutationCoverage (default-cli) в мультизагрузчике проекта: выполнение default-cli цели org.pitest: pitest-maven: 1.4.8: ошибка mutationCoverage:Мутации не найдены.Это, вероятно, означает, что есть проблема с предоставленным classpath или фильтрами.[ОШИБКА] См. http://pitest.org для более подробной информации.
Так что я могу только предположить, что есть разница в окружающей среде - но какая?Или это ошибка в питесе?