Инкрементный анализ PITEST не может найти локальный хэш-файл

#mutation-testing #pitest

#тестирование мутации #pitest

Вопрос:

В настоящее время я пробую PITest, и пока он работает должным образом. Однако это довольно медленно, и пока единственным решением является использование инкрементного анализа, который потенциально решит проблему медлительности. Я попытался настроить его так, как описано в документации. Вот моя конфигурация:

  <build>
<plugins>
  <plugin>
    <executions>
      <execution>
        <id>pitest-mutation-coverage</id>
        <goals>
          <goal>mutationCoverage</goal>
        </goals>
      </execution>
    </executions>
    <groupId>org.pitest</groupId>
    <artifactId>pitest-maven</artifactId>
    <version>1.4.6</version>
    <configuration>
      <threads>8</threads>
      <timestampedReports>false</timestampedReports>
      <historyInputFile>${project.basedir}/pitest.history</historyInputFile>
      <historyOutputFile>${project.basedir}/pitest.history</historyOutputFile>
      <avoidCallsTo>
        <avoidCallsTo>java.util.logging</avoidCallsTo>
        <avoidCallsTo>org.slf4j</avoidCallsTo>
      </avoidCallsTo>
      <mutators>
        <mutator>DEFAULTS</mutator>
      </mutators>
    </configuration>
  </plugin>
</plugins>
  

Однако на практике я не вижу, чтобы PITest учитывал historyInput и historyOutput, и вместо этого в журналах, которые я вижу

 [INFO] Will read and write history at /var/folders/x1/qp5hhks571q0drb7kd7vjn0c0000gn/T/my.module.groupId.artifactId.version_pitest_history.bin
  

Я перепробовал множество различных настроек, и, похоже, ни одна из них не работает.
Я чего-то не понимаю?

Обновить

В конце концов, оказывается, что определение плагина исходило от родительского pom, и переопределение его частично возможно в наследующем дочернем pom.

Ответ №1:

Там конфигурация, которую вы опубликовали, работает правильно.

Вы бы увидели только сообщение

[INFO] Will read and write history at /var/folders/x1/qp5hhks571q0drb7kd7vjn0c0000gn/T/my.module.groupId.artifactId.version_pitest_history.bin

Если вы также установили withHistory значение true.

Похоже, что есть ошибка, которая останавливает работу, если установлены оба параметра. Это необходимо исправить, но устанавливать оба варианта на самом деле не имеет смысла.

withHistory это удобный флаг, который устанавливает, что как in, так и outfile указывают на местоположение во временном каталоге.

Параметры файла ввода / вывода предназначены для случаев, когда требуется более детальный контроль (например, входной файл является общим для всей команды).

Поэтому либо установите witHistory , либо задайте файлы истории явно, не делайте и того, и другого.

Комментарии:

1. У меня для этого свойства не установлено значение true, я где-то читал об этом на форумах. Тем не менее, мои проблемы продолжаются. По сути, я хочу, чтобы этот файл хэша был сгенерирован, и я мог бы зафиксировать его и поделиться им через систему управления версиями, но не смог разместить его где-нибудь, что я мог бы настроить. Я также использую последнюю версию PITest и все еще задаюсь вопросом, почему у меня это не работает, потому что должно: D

2. Отправленное вами информационное сообщение отображается только в том случае, если для параметра withHistory установлено значение true. Если он нигде не задан в pom, возможно, вы устанавливаете его в командной строке при выполнении?

3. У меня он не установлен, и из командной строки я выполняю «mvn clean install»

4. Хорошо, я думаю, что, по крайней мере, я нашел проблему для себя, у меня есть объявление плагина для PITest в родительском pom. Я всегда предполагал, что объявление в дочернем pom переопределит его, но, очевидно, это не так. Вы думаете, что это ошибка на вашей стороне? Я бы сказал так.

5. Способ, которым наследуются и разрешаются значения конфигурации, является стандартным поведением maven, над которым плагин pitest не имеет никакого контроля.