Pitest (также известный как PIT) — это современная система мутационного тестирования для Java и JVM.
Прочитайте все об этом на https://pitest.org.
Релизы
1.17.2
- #1362 Исключить лямбда-выражения в методах, исключенных аннотацией (спасибо @see-quick)
1.17.1
- #1353 Предупреждать об удалении цели SCM в будущем
- #1355 Обновление ASM для поддержки Java 24
- #1359 Удалить использование генератора toString на основе отражения.
- #1361 Начальная поддержка кросс-модульных тестов в maven
1.17.0
- #1348 Расширить точку расширения трансформации
- #1349 Улучшение стабильности powermock
1.16.3
- #1345 Улучшено обнаружение отложенного выполнения в статическом коде инициализации.
- #1347 Автоматическое добавление стандартных исходных каталогов Kotlin для проектов Maven.
1.16.2
- #1340 Показывать тесты на выживание мутантов в html-отчёте (спасибо @vivganes)
- #1342/#1343 Исправление вводящей в заблуждение регистрации путей истории (спасибо @vivganes)
- #1344 Изменить код отложенного выполнения в перечислениях и одиночных элементах.
1.16.1
- #1329 Предотвратить конфликты версий с совокупной целью, когда плагины используют jackson
1.16.0
- #1311 — Включить неизменяемые коллекции, хранящиеся непосредственно в полях фильтра
+funmodifiablecollection
для защитного кода. - #1319 — Использовать переменные среды из конфигурации Surefire.
- #1322 — Автоматически добавлять -ea для включения утверждений
- #1321 — Развернуть интерфейс BuildVerifier.
Изменение API в #1321 обратно совместимо, но плагины, написанные для версии 1.16.0, могут не работать с более ранними версиями.
1.15.8
- #1310 Фильтровать мутации в Collections.unmodifying*
- #1309 Заменить поля в argLines, импортированные из конфигурации Surefire.
- #1308 Удалить версии maven vcs
По умолчанию фильтрация для #1310 отключена. Чтобы активировать его, добавьте строку фильтра +funmodifiablecollection
.
1309 добавляет новое свойство maven parseSurefireArgLine
. По умолчанию для этого параметра установлено значение true, но теперь надежный анализ аргументов можно отключить, установив для него значение false.
1.15.7
#1305 Покрытие не записано для кода в имени пакета com.sun*
В фильтре, предназначенном для сбора устаревших классов JDK в пакете «com.sun.*», отсутствовал '
, в результате чего покрытие кода не регистрировалось, если тестируемый код находился в пакете, начинающемся с «sun».
1.15.6
- #1295 временно удалить динамическое отслеживание звонков
Вызов динамического отслеживания вызовов для статического кода инициализатора будет вновь введен, когда будет реализована дополнительная логика для подавления фильтрации мутаций для кода отложенного выполнения.
1.15.5
- #1292 В строках Arg, взятых из конфигурации Surefire, свойства не заменены.
1.15.4
- #1288 — Новая точка расширения, позволяющая экспортировать пользовательские форматы покрытия.
- #1289 — Анализ конфигурации аргументов из конфигурации Surefire.
- #1274 Следовать за вызовом динамических вызовов при обнаружении методов только статического инициализатора
Обратите внимание, что пользователям maven, которым ранее приходилось дублировать параметры argline между параметрами Surefire и Pitest jvmArgs
и argline
, возможно, потребуется скорректировать свою конфигурацию при обновлении. Записи, отправленные в Surefire, теперь будут автоматически добавляться в Pitest.
1.15.3
- #1271 — Дважды проверьте статус потока, прежде чем отмечать миньона как мертвого.
1.15.2
- #1268 - Фильтровать проверки Lombok NonNull
- #1267 — Развернуть тестовый API, чтобы разрешить отчеты об ошибках во время тестового сканирования.
#1267 гарантирует, что ранее скрытые ошибки, обнаруженные плагином JUnit5, теперь будут сообщаться. Это обратно совместимое изменение API. Это не будет иметь никакого эффекта, пока плагин JUnit5 не будет обновлен для использования расширенного API. Обновленный плагин не будет совместим с более ранними версиямиpitest.
1.15.1
- #1260 Обновление до ASM 9.6 для поддержки Java 22.
- #1261 Не допускать ошибок в файлах истории питестов < 1.15.0
1.15.0
- #1253 подавлять статистику покрытия, когда включено сокращение истории тестов
- #1252 добавить параметр дополнительных возможностей для maven, чтобы разрешить добавление функций в командной строке без перезаписи существующего списка.
- #1251 расширить интерфейсы истории (критическое изменение)
- #1250 улучшено сообщение об ошибке при невозможности анализа строк функций.
- #1248 настройка производительности - идентификация класса теста задержки
- #1247 удаление устаревшего кода
В результате критических изменений API в № 1251 плагин arcmutate kotlin должен быть обновлен до версии 1.1.0 при обновлении до версииpitest 1.15.0.
1.14.4
#1246 Отдавать предпочтение предыдущему тесту на убийство при использовании файлов истории.
1.14.3
- #1239 Поддержка исключенных групп, разделенных запятыми (спасибо @johnathana)
- #1243 Явно упорядочить путь к классам в файле истории, чтобы обеспечить согласованность между запусками.
- #1245 Предотвращение путаницы в протоколировании фиктивных запусков инкрементного анализа.
1.14.2
- #1221 — Единый расчет процентов (спасибо @Vampire)
- #1218 — Потокобезопасность для сбора результатов при параллельном выполнении тестов (спасибо @Vampire)
- #1225 — Предотвратить ошибку, если в путь к классам включены неархивные файлы.
- #1229 — Мутировать Iterables в пустой список
- #1227/1232 — Исправлена зависимость интерфейса MethodMutator от абстрактных типов.
1.14.1
- #1215 Применить перезапись покрытия при агрегировании отчетов.
- #1219 Обязательно попробуйте сначала применить фильтрацию ресурсов (спасибо @Vampire)
1.14.0
- #1213 Фильтрация эквивалентного деления на -1 математических мутантов
- #1212 Автоматическое добавление junit-platform-launcher
#1212 В значительной степени решает проблему синхронизации версииpitest-junit5-plugin с версией junit5 для пользователей maven.
При использовании плагинаpitest-junit5-plugin версии 1.2.0 pitest теперь автоматически выбирает версию junit-platform-launcher, совместимую с версией junit5, используемой тестируемой системой.
Проблемы остаются для пользователей gradle, которые все еще могут столкнуться с совместимостью API при использовании версии 1.2.0 плагинаpitest-junit5. Однако теперь их можно решить, вручную добавив правильную версию junit-platform-launcher в путь к классам.
Есть надежда, что в будущей версии плагинаpitest gradle будет реализовано исправление, аналогичное решениюpitest-maven.
1.13.2
- #638 Убедитесь, что % отображается как 100, когда все мутанты убиты (спасибо @Vampire)
- #1197 Показывать информацию о запуске, когда для входа установлено значение VERBOSE_NO_SPINNER (спасибо @Vampire)
- #1198 Улучшение логирования (спасибо @Vampire)
- #1200 Предупреждать, если во время сбора покрытия включено параллельное выполнение тестов (спасибо @Vampire)
- #1199 Переключитесь на System.nanoTime для определения времени тестирования (спасибо @Vampire)
- #1207 Поддержка удаления аннотаций уровня класса.
1.13.1
- #1194 Поддержка
**.
шаблон в виде глобусов (спасибо @Pfoerd)
1.13.0
- #1188 Разрешить мутаторам создавать несколько различных мутаций.
- #1190 Предоставление перехватчикам приоритизации тестов
- #1191 Включить мутацию аннотаций методов и полей
1.12.0
- #1186 Новые точки расширения
1.11.7
- #1178 Запятые при экспорте CSV разрыва имени теста убийства (спасибо @Bonajo)
- #1177 Применять функции в последовательном порядке
- #1176 Обновление до ASM 9.5
1.11.6
- #1171 Предотвратить двойное создание экземпляров функций
- #1170 Обновить ссылки на https (спасибо @romani)
1.11.5
- #1167 Исправление низкой производительности статического анализа для больших методов.
- #1166 Обновить ссылку на https (спасибо @romani)
1.11.4
- #1161 Предотвратить дублирование клинита при наличии синтетического клинита
- #1162 Автоматическое добавление исходных каталогов Kotlin в maven, если они есть.
1.11.3
- #1159 Включить в статистику покрытия линий только мутировавшие классы
1.11.2
- #1157 Сообщать только целевые строки кода
Статистика покрытия строк, отображаемая на консоли, включала строки кода для всего проекта, даже если были применены фильтры. Это привело к резко низким показателям охвата.
1.11.1
- #1156 Запретить учет синтетических линий в покрытии
1.11.0
- #1138 Не изменять избыточность при переходе к случаям переключения по умолчанию
- #1150 Новые точки расширения
Обратите внимание, что #1150 включает критические изменения интерфейса, которые могут потребовать обновления сторонних плагинов.
1.10.4
- #1134 Добавляем параметр
excludedRunners
в интерфейс командной строки и Ant - #1131 Поддержка верного синтаксиса поздней оценки свойств для аргументов
1.10.3
- #1128 Исправлена ошибка: строки с повторяющимися отладочными записями учитываются дважды.
1.10.2
- #1125 Исправлена ошибка: синтетические лямбда-методы не обрабатывались как строки кода.
1.10.1
- #1124 Исправлена ошибка, появившаяся в версии 1.10.0, когда методы моста рассматривались как допустимые строки кода.
1.10.0
- #1067 Улучшена поддержка Quarkus и Roboelectric.
- #1116 Возможность исключить строки 0 и 1 из всех классов
- #1118 Обнаружение отсутствующих плагинов
В результате #1067 важно, чтобы мутации создавались только для одного класса для каждой JVM. Поэтому точка расширения MutationGrouper
была удалена, поскольку это позволяло нарушить это ограничение. Любые сторонние плагины, использующие это расширение, больше не поддерживаются.
Релизы также включают в себя многочисленные изменения во внутренних структурах данных. Любые сторонние плагины, использующие эти структуры, возможно, потребуется обновить.
1116 обеспечивает грубый способ исключения автоматически сгенерированного кода, не обнаруженного другими фильтрами PEST. По умолчанию он отключен, поскольку в некоторых ситуациях он может исключить код, который допустим для мутации, но его можно включить, добавив строку функции +nofirstline
.
1.9.11
- #1105 Агрегатор разрешает неправильный файл для файлов Kotlin вне пакета с таким же именем.
- #1111 Исправить опечатку в журнале (спасибо @wangbo15)
1.9.10
- #1106 Не заменять Map.of на Collections.emptyMap
- #1109 Расслабляющая проверка отладки исходного файла
1.9.9
- #1098 Включить регистровые значения в описания мутаций переключателей
1.9.8
- #1094 Поиск исходных файлов за пределами каталогов пакета
Добавляет поддержку таких языков, как Kotlin, где исходные файлы могут находиться не в структуре каталогов, соответствующей их пакету. Обратите внимание: если одно и то же имя файла встречается более чем в одном месте, pitest не может гарантировать, что будет найден правильный файл.
1.9.7
- #1091 — Экранирование имен классов в XML покрытия.
1.9.6
- #1092 — Обновление до ASM 9.4.
- #1091 — Правильное экранирование XML покрытия.
- #1088 — Удалить неиспользуемый параметр расстояния зависимости.
- #1085 - Не создавать отчеты о временных метках по умолчанию.
Обратите внимание, что #1085 меняет поведение по умолчанию, поэтому отчеты больше не записываются в каталоги с отметкой времени по умолчанию. Если вам требуется такое поведение, вам нужно будет явно включить его.
1.9.5
- #1078 — Интерфейс программы обновления конфигурации Alter
- #1079 — По умолчанию избегать ведения журнала JBoss.
1078 — это критическое изменение интерфейса, но оно включено в точечный выпуск, поскольку считается, что в настоящее время внешних клиентов нет.
1.9.4
- #1063 — Улучшить фильтрацию эквивалентных обратных мутантов.
- #1064 — Удалить устаревшие мутаторы return val и старую группу значений по умолчанию.
- #1066 — Расширить фильтрацию статического инициализатора.
- #1070 — Удалить агент jacoco, если он присутствует на argline.
1.9.3
- #1052 — Поддержка свойства argLine maven и однострочных argLines.
- #1054 — Обеспечить контроль над автоматическим добавлением -Djava.awt.headless=true
- #1055 — Возможность автоматической установки количества потоков.
- #1056 - Установить таймаут для связи через сокет
- #1058 — Установить значения по умолчанию для кодировки ввода и вывода для программного API.
1054 Перемещает поддержку автоматического добавления headless=true (чтобы предотвратить кражу фокуса клавиатуры на Mac) в функцию. Он включен по умолчанию, но его можно отключить, добавив -MACOS_FOCUS
в строку функций.
1055 добавляет возможность угадать подходящее количество потоков для текущего компьютера, добавив +auto_threads
в строку функций. Эта опция отключена по умолчанию и предназначена для локального использования. Не рекомендуется использовать на CI-сервере.
1.9.2
- #1050 — Проверить, живы ли миньоны, чтобы предотвратить зависание процесса.
1.9.1
- #1047 Устранение периодических зависаний процесса
1.9.0
- #1035 - Улучшить потребление памяти покрытия
- #1038 — Поддержка плагина сайта Maven 3.12.0+ (спасибо IOs)
- #1040 — Ускоренный расчет покрытия JUnit 5.
- #1040 — Удалить параметр
dependencyDistance
В результате #1040 любые внешние плагины для тестирования PEST (например, JUnit 5, TestNG, arcmutate Accelerator) при обновлении должны быть обновлены до совместимой версии (1.0.0).
Файлы истории из более ранних выпусков несовместимы и должны быть удалены при обновлении.
Старые версии
1.8.1
- #637 — Поддержка различных кодировок ввода и вывода (спасибо @qxo)
- #705 — Разрешить + в путях к файлам (спасибо @ali-ganbari)
- #903 - Фильтровать мутанты в одноэлементных конструкторах
- #1025 — Переработана фильтрация строкового переключателя.
- #1027 — Переработана фильтрация утверждений и удален устаревший механизм фильтрации.
- #1030 — Фильтровать ненужные мутации переключателя перечисления.
1.8.0
- #1017 — Улучшено статическое обнаружение бесконечного цикла.
- #1020 — Переработать библиотеку сопоставления NFA и попробовать фильтрацию ресурсов.
- #1022 - Поддержка теста Кваркуса
1.7.6
- #1008 Обновите ASM для первоначальной поддержки Java 19.
- #1016 Ошибка, если не предоставлен рабочий тестовый плагин.
- #1015 Убрать поддержку TestNG из основной базы кода.
В результате #1015 плагин TestNG теперь необходимо настроить при использовании pitest в базах кода, протестированных TestNG. В более ранних версиях поддержка включалась автоматически.
1.7.5
- #625 / #983 Исправлено агрегирование отчетов (спасибо @therealryan и @aurelien-baudet)
- #985 Ручка пустого Surefire исключает
- #993 Переместить мутаторы rv во внешний плагин
- #994 / #995 Эквивалент фильтра в штучной упаковке возвращает истинные мутанты в блоках try.
- #968/997 Улучшить фильтрацию эквивалентных пустых возвратных мутантов.
- #999 / 1003 Новый параметр для определения корня многомодульных проектов.
В результате #993 любой, желающий использовать операторов RV, ориентированных на исследования, должен настроить плагинpitest-rv, однако эти мутаторы не рекомендуются для общего использования.
1.7.4
- #965 — BigDecimal Mutator (спасибо @MarcinNowak-codes)
- #750 — Поддержка —DskipTests из командной строки (спасибо @marwin1991)
1.7.3
- #952 Карта мутации возвращается к
emptyMap
вместо нуля - #954 Разрешить исключение мутаторов
- #957 Фильтровать эквивалентные мутации для Boolean.TRUE и Boolean.FALSE.
1.7.2
- #943 Изменить мутаторы по умолчанию — заменить условное отрицание на условное удаление.
- #946 Поток мутации возвращается к пустому потоку вместо нулевого
1.7.1
- #932 Улучшение описаний мутаций переключателей.
- #934 Настройка детализации вывода консоли
- #940 Скрыть внутренние функции
- #942 Исправление: сторонние операторы мутации не добавлялись в путь к классам клиента.
- #939 Улучшение кэширования извлечения байт-кода.
1.7.0
- #923 Изменения внутреннего интерфейса
- #930 Сменные мутаторы
Из-за внутренних изменений некоторые сторонние плагины могут быть несовместимы с этой версией.
Перед обновлением следует удалить все файлы истории.
Имена мутаторов условий удаления немного изменились в результате #930, и, возможно, их потребуется обновить в сценариях сборки, если они явно активированы.
1.6.9
- #922 Фильтровать эквивалентные мутантыstream.empty в вызовах FlatMap
- #921 Гарантированный порядок операторов мутации
- #919 Фильтровать ненужные мутации в Java-записях
1.6.8
- #917 — Добавить метод для получения всех идентификаторов мутаторов для питклипса и других инструментов.
- #913 — Увеличьте ASM до 9.2.
1.6.7
- #897 Исправление описания при замене значения пустым набором
- #900 Поддержка нескольких тестовых механизмов.
- #822 Исправление регрессии NPE при чтении манифеста пути к классам.
- #798 Исправление регрессии поддержки параметров jvmArgs через maven.
- #797 Исправить регрессию покрытия линии на консоли.
В результате #900 параметр testPlugin
больше не существует, но pitest продолжит принимать его без ошибок в этой версии. Pitest будет использовать любые механизмы тестирования, предоставленные в пути к классам, возвращаясь к встроенной поддержке JUnit4, когда другие механизмы тестирования не могут обработать этот класс.
1.6.6
- #891 - Исправление производительности истории
- #889 — Не сканировать путь к классам для истории, если опция не указана.
- #887 — Исправление css для таймаутов и ошибок памяти.
- #888 — Удалить несуществующее максимальное количество мутантов на каждый параметр класса.
- #890 — Удалить несуществующий параметр статических инициализаторов mutate.
1.6.5
- #882 Избегайте запуска тестов, когда мутанты невозможны.
1.6.4
- #862 Обновление ASM для Java 16
1.6.3
- #853 Исправлена проверка функции без учета регистра.
- #855 Сделать данные о покрытии доступными для перехватчиков
- #857 Передача данных stderr/out построчно (спасибо @kgeilmann)
- #858 Исправить тест, который не завершался неудачей, когда maxSurviving равен 0 (спасибо @alexkoltz)
- #860 Исправление ненужных мутаций при попытке использования ресурсов в Java 11+.
1.6.2
- #770 и #746 Исправление NPE на этапе покрытия (спасибо @LaurentTho3).
- #849 Сделать имена функций нечувствительными к регистру
- #844 Расширение системы функций для работы со слушателями
- #842 Сделать параметры отчета доступными для слушателей
1.6.1
- Автоматизировать выпуск в maven Central
- #774 Статистика силы теста (спасибо @alex859)
- #798 Включить передачу аргументов jvm из командной строки (спасибо @yfrolov)
- #797 Добавить покрытие линии в консоль (спасибо @qxo)
- #822 Уменьшить NPE при случайной зависимости (спасибо @szpak)
1.5.2
- #749 Поддержка ANT для опции fullMutationMatrix (спасибо @ayaankazerouni)
- #752, #755, #757 Улучшения версий и улучшения устаревшего кода (спасибо @AlexElin)
- #758 Правильная банка для тестовых пакетов (спасибо @nicerloop)
- #765 Исправление инкрементного анализа для TestNG (спасибо @StefanPenndorf).
1.5.1
- #737 Добавить флаг SkipFailingTests в инструмент командной строки (спасибо @szpak)
- #739 Исправить опечатку в сообщении об ошибке (спасибо @vmellgre)
- #745 Улучшено сообщение об ошибке, когда junit не находится в пути к классам (спасибо @szpak)
- #748 Увеличьте сборку до версии 8.0 для поддержки Java 14.
1.5.0
- #556 — Не изменять конструкторы перечислений
- #726 — Убедитесь, что покрытие статического инициализатора записано.
- #734/#735/#736 — Замените устаревшие интерфейсы Java API (спасибо @AlexElin)
1.4.11
- #683 — Фильтрация попыток с ресурсами перед фильтрацией встроенного кода (спасибо @Vampire)
- #686 — Не печатайте имя класса дважды для неразделяемых тестовых модулей (спасибо @Vampire)
- #672 — Не включать текущий каталог в путь к классу миньонов (спасибо @Vampire)
- #692 — Добавьте свойство='skipPitest', чтобы пропустить плагин атрибута inn maven (спасибо @cjgwhite)
- #697 — Совместимость с TestNG 7.0.0 (спасибо @kris-scheibe)
- #666 — UOI4 сообщает об измененном имени поля (спасибо @LaurentTho3)
- #716 — Поднять asm до версии 7.3.1 (требуется для Java 14)
- #710 — Использовать новый набор мутаторов по умолчанию.
1.4.10
- #534 Блоки меньшего размера для более точного нацеливания тестов (спасибо @jon-bell)
- #664 Исправление ключа карты A0D2 (спасибо @Vampire)
- #656 Escape-символы в методах инициализации для html-отчета (спасибо @Vampire)
- #404 Фильтрация ненужных мутаций для вызовов Objects.requireNonNull, сгенерированных компилятором
1.4.9
- #613 / #623 — исправление проблем с powermock (спасибо @jon-bell)
- #614 — Улучшено сообщение об ошибке при отсутствии тестового плагина (спасибо @szpak)
- #620 — Поддержка процессоров аннотаций, таких как Micronaut, которые не устанавливают имя файла отладки.
1.4.8
- #597 Исправление ошибки покрытия при большом количестве классов (спасибо @jon-bell)
- #601 Не перехватывайте фокус клавиатуры на MacOS (спасибо @maxgabut)
1.4.7
- #545 — Более быстрый расчет покрытия (спасибо @jon-bell)
1.4.6
- #580 — обновиться до ASM 7.1.
- #573 — Поддержка Ant для
testPlugin
и failWhenNoMutations
(спасибо @mduggan) - #555 — Разрешить пустые элементы в конфигурации maven (спасибо @maxgabut)
1.4.5
- #557 — Проблемы с Java 8.
1.4.4
- #518 — Экспериментальный мутатор BigInteger (спасибо @ripdajacker)
- #513 — Сортировка мутаторов в html-отчёте (спасибо @ThLeu)
- #553 — Классические мутаторы из литературы (спасибо @LaurentTho3)
- #528 — Добавлена опция SkipFailingTests из плагина maven (спасибо @nicerloop)
1.4.3
- #510 — Вычислить матрицу тестов мутаций (спасибо @nrainer)
- #519 — Поддержка Java 11
1.4.2
- #500 — Поддержка больших путей к классам с помощью новой опции
useClasspathJar
(спасибо @jqhan)
1.4.1
- #446 — Игнорировать пустые каталоги при агрегировании отчета (спасибо @maxgabut)
- #457 — Исправить базовый каталог в многомодульных проектах (спасибо @sarahBuisson и @giggluigg)
- #471 — Базовая поддержка Java 11.
- #477 — Нулевой байт в xml (спасибо @maxgabut)
- #480 — Разрешить агрегирование отчетов с отметками времени (спасибо @maxgabut)
- #495 — Переместить сводку в конец вывода консоли (спасибо @pedrorijo91)
- #499 — Исправление эквивалентных мутантов в новых возвращаемых мутаторах val.
1.4.0
- #445 — Увеличьте минимальную поддерживаемую версию Java до 8.
- Перейти на АСМ 6.1.1
- #448 Сводный отчет на основе модуля (спасибо @sarahBuisson)
- #462 Экранирование имен тестов в XML-файле покрытия (спасибо @maxgabut)
1.3.2
- #433 — Объединение отчетов через maven (спасибо @rchargel)
- #438 — Фильтровать тесты на уровне метода (спасибо @ftrautsch)
- #439 — Мутатор возврата примитивов не обрабатывает байты.
- #380 — Устранить зависимость от xstream для улучшения поддержки Java 9.
- #414 — Заменить хранилище истории xstream (спасибо @kiftio)
Обратите внимание, что при обновлении файлы истории, созданные предыдущими выпусками, несовместимы с версией 1.3.2 и выше.
1.3.1
- #434 — Предупреждение безопасности XStream
1.3.0
- #196 — Поднимите минимальную версию Java до 7.
- #425 — Расширение для каждого обнаружения.
- #428 — Добавить параметр
excludedTestClasses
- #379 — Удалить поддержку изменения статических инициализаторов.
- #432 — Добавить функциональность плагина экспорта в питест.
- #427 — Улучшены мутаторы возвращаемых значений.
- #429 — Упростить тестовый API
428 изменяет существующее поведение фильтра исключенных классов. Ранее это исключало возможность изменения классов и запуска их в качестве тестов, что могло потребовать внесения изменений для некоторых людей при обновлении.
В результате 429 тестов TestNG больше не будут автоматически обнаруживаться — новый параметр testPlugin
должен быть явно установлен на «testng».
1.2.5
- #407 — Цель SCM не может быть запущена из модуля (спасибо @sbuisson)
- #256 – Встроенный стиль нарушает политику безопасности контента (спасибо @kiftio)
- #403 — Нет CSS в html-отчете, просмотренном jenkins (спасибо @kiftio)
- #409 — Мутация на основе изменений в разветвлениях (спасибо @sbuisson)
- #418 — Избегайте приращений цикла.
- #424 – Избегайте использования каждого кода
- #389 — Расширение соответствия неявных нулевых проверок.
1.2.4
- #397 — Сообщить о причинах пропуска модулей maven
- #389 — Фильтровать ненужные проверки getClass на null в лямбда-выражениях
- #400 — Обновление до ASM 6.0.
1.2.3
- Обновление до ASM 6 для поддержки Java 9.
- #388 — Пометить плагин Maven как потокобезопасный
- #362 — Подавить общий эквивалентный мутант методами равенства
1.2.2
- #367 — Статический анализ не может найти основные классы в некоторых проектах.
1.2.1
- #347 — Избегайте автоматически сгенерированного кода (например, Lombok), помеченного @Generated.
- #285 — Избегайте условий, генерируемых компилятором, в строке включения. (спасибо @Kwaq)
- #218 — Новый «голый приемник» / мутатор цепочки методов. (спасибо @UrsMetz)
- #354/#356 — Новая точка расширения плюс изменения для снижения стоимости произвольного доступа к байт-коду для статического анализа.
- #353 — Улучшено обнаружение кода статического инициализатора.
- #364 — Фильтровать бесконечные циклы с помощью статического анализа.
- #365 - Система настройки плагинов
(Примечание № 347 не обнаруживает javax.annotaion.Generated
, поскольку оно имеет только сохранение исходного кода.)
1.2.0
- #318 — Отделить основной код процесса от пути к классам клиента совместного использования кода.
- #295 — Игнорировать абстрактные тесты TestNG
- #215 — Автоматический выбор целевых классов для maven
- #314 — Не сбой для модулей maven без тестов или кода
- #306 — Не выдавать ошибку, если в наборе изменений находятся только интерфейсы
- #325 — Анонимный класс в тесте Спока вызывает ошибку.
- #334 — Совместимость с последними выпусками TestNG.
- #335 — Неверное освещение с помощью powermock.
Примечание. Начиная с этого выпуска плагин maven будет автоматически определять, какие классы следует изменять, вместо того, чтобы предполагать, что имена пакетов соответствуют идентификатору группы.
1.1.11
- #269 - Невозможно сломать билд на 1 мутанте
- #271 — Включить дескриптор метода в покрытие строки
- № 170 — Исключение бегуном JUnit
- #291 — Обработка пустого исключения
- #287 — Проверить иерархию классов на наличие аннотаций.
- #289 — Возможность указать путь к классам из файла.
1.1.10
- #260 — Начальная поддержка мутации кода Kotlin.
- #264 — Поддержка бегуна yatspec (спасибо @theangrydev)
- Прервите сборку, когда выживет более
maxSurviving
мутантов
1.1.9
- #132 — Разрешить анализ только файлов, затронутых в последнем коммите (спасибо Томашу Лучу)
1.1.8
- #239 — Предоставьте ярлык для установки файлов истории через maven.
- #240 — Поддержка регулярных выражений (спасибо sebi-hgdata)
- №243 – Используйте эфемерные порты для связи с миньонами.
1.1.7
- #196 — Поднимите минимальную версию Java до 1.6.
- #231 - Процесс зависает
1.1.6
- № 10. Добавьте цель отчета Maven (спасибо jasonmfehr)
- #184 — Удалить недокументированную функцию файла проекта.
- #219 — Улучшение производительности при создании отчетов (спасибо tobiasbaum)
- #190 — Разрешить пользовательские свойства для плагинов.
Обратите внимание, что этот выпуск содержит известную проблему (№ 231). Пожалуйста, обновите.
1.1.5
- Исправление № 148 — Stackoverflow с поставщиками данных TestNG при использовании JMockit.
- Исправление № 56 — не сообщать о несовместимости Junit.
- Исправление № 174 — неверный файл linecoverage.xml со статическими инициализаторами.
- Исправление № 183 — невозможно запустить тесты GWTMockito.
- Исправление № 179 — неработающий
includeLaunchClasspath=false
в Windows. - #173 — Чтение исключений и групп из конфигурации maven Surefire.
1.1.4
- #157 — Поддержка флага maven -DskipTests (спасибо lkwg82)
- Исправление № 163 — не следует включать дерево тестов в порог покрытия.
- #166 — Разрешить исключения пути к классам для плагина maven (спасибо TomRK1089)
- #155 — Восстановить совместимость с Java 5.
- Исправление № 148 — проблема с JMockit + TestNG (спасибо estechin и KyleRogers)
1.1.3
- Исправление № 158 — тесты неправильно исключались из мутантов.
- Исправление № 153 — плагин SCM не работает для maven 2.
- Исправление № 152 — не работает с IBM jdk.
1.1.2
- Исправление № 150 — недостаточное покрытие линии.
1.1.1
- Блочное покрытие (исправления 79/131)
- Прекращение поддержки работы на Java 5 (байт-код Java 5 все еще поддерживается)
- Флаг пропуска для модулей maven (#106)
- Перестаньте объявлять TestNG как зависимость
- Новый мутатор распространения параметров (спасибо UrsMetz)
1.1.0
- Изменить схему выявления мутантов (см. №125)
- Поддержка альтернативных тестовых API через систему плагинов.
- Сообщить об ошибке, если предоставленное имя мутатора не совпадает (спасибо artspb)
- Сообщите о кодах выхода из дочернего процесса покрытия (спасибо KyleRogers)
- Рассматривайте тесты JUnit с аннотацией ClassRule как единое целое (спасибо devmop)
Обратите внимание, что в этой версии все сохраненные файлы истории или результаты сонара становятся недействительными.
1.0.0
- Схема нумерации версий переключателя
- Обновление до АСМ 5.0.2
- Исправление № 114 — не запускается в Java 8, когда установлен флаг -parameters.
- #99 Поддержка дополнительного свойстваClasspathElements в плагине maven (спасибо artspb)
- #98 Не мутируйте Java 7, попробуйте с ресурсами (спасибо @artspb)
- #109 расширенный условный мутатор удаления (спасибо @vrthra)
0,33
- Перейдите на Гитхаб
- Обновление ASM для поддержки байт-кода Java 8 (спасибо «iirekm»)
- Частичная поддержка категорий JUnit (спасибо «chrisr»)
- Новый мутатор Remove Increments (спасибо Рахулу Гопинатху)
- Незначительные улучшения ведения журналов (спасибо Кайлу Роджерсу, он же Стефан Пенндорф)
- Исправление № 92 — сломанная поддержка maven 2.
- Исправление №75 — неправильно игнорируемые тесты в классах с @Ignore и @BeforeClass/@AfterClass.
0,32
- восстанавливает совместимость с Java 7
- новый мутатор удаления условных операторов
- поддержка изменения статических инициализаторов с помощью TestNG
- правильно изолировать пути к классам при запуске через Ant
- перерыв зависит от порога покрытия
- разрешить указание JVM
- поддержка определяемых пользователем стратегий выбора тестов
- поддержка определяемого пользователем формата вывода
- поддержка определяемой пользователем приоритезации тестов
- исправлена проблема с блокировкой использования Robolectric
Обратите внимание, что в этом выпуске изменена настройка проектов на основе Ant. Подробную информацию об использовании см. в разделе Настройка ant.
0,31
- Совместимость с Maven 2 восстановлена.
- Гораздо более быстрый расчет покрытия линии
- Исправление № 78 — ошибка, когда тест PowerMockito сохраняет макет как член.
В этом выпуске также изменен ряд деталей внутренней реализации, некоторые из которых могут представлять интерес/важность для тех, кто поддерживает инструменты, интегрируемые с PIT.
Мутации теперь имеют внутреннюю область действия, как описано в https://groups.google.com/forum/#!topic/pitusers/E0-3QZuMYjE.
Был введен новый класс (org.pitest.mutationtest.tooling.EntryPoint), который устраняет часть дублирования, существовавшего в различных способах запуска анализа мутаций.
0,30
- Поддержка параметризованных тестов Спока.
- Поддержка тестов JUnitParams.
- Исправление № 73 — параметризованные тесты JUnit, вызывающие mutee во время сбоя установки на этапе мутации.
- Исправление № 63 — задача ant завершается с ошибкой, если указаны пустые параметры.
- Возможность переопределить параметры maven из командной строки
- Возможность провалить сборку, если она не достигает заданного показателя мутации.
- Повышение производительности при использовании в тестах аннотаций @BeforeClass или @AfterClass.
- Немного улучшено планирование для нескольких потоков.
- Улучшенная поддержка нескольких проектов maven.
- Интеграция с системой контроля версий для пользователей maven
0,29
- Инкрементный анализ (--historyInputLocation и --historyOutputLocation)
- Обнаружение встроенного кода включено по умолчанию
- Более тихая регистрация по умолчанию
- Улучшенная поддержка Java 7.
- Обновление ASM с 3.3 до 4
- Исправление проблем параллелизма во время сбора покрытия.
- Исправление № 53 — проблемы с версиями Junit моментальных снимков.
- Исправление № 59 — повторяющиеся зависимости, установленные через maven.
0,28
- Встроенное обнаружение окончательного блока (--detectInlinedCode)
- Новый экспериментальный мутатор оператора switch (предоставлен Крисом Риммером)
- Не изменяйте классы Groovy
- Исправление № 33 — установите user.dir в соответствии с Surefire.
- Исправление № 43 — опционально подавлять папки с метками времени (--timestampedReports=true/false).
- Исправление № 44 — исключение одновременной модификации при сборе покрытия.
- Исправление №46 — неправильная установка флагов задачей ant.
- Меньший объем памяти для основного процесса
- Более быстрый сбор покрытия для больших кодовых баз.
- Более быстрое сканирование путей к классам для больших баз кода.
- Поддержка методов пакета JUnit 3.
- Исправления неправильного обнаружения тестов JUnit 3.
Известная проблема . Исправление № 33 может не решить проблему для пользователей maven 2.
Обнаружение кода Groovy еще не тестировалось с Groovy 2, который может генерировать байт-код, существенно отличающийся от более ранних версий.
0,27
- Гораздо красивее отчеты
- Теперь позволяет избежать изменения операторов утверждения.
- Удалена опция inScopeClasses — вместо этого используйте targetClasses и targetTests.
- Исправлена 100% загрузка ЦП при сбое дочерней JVM.
- Исправление для #35 #38 — экспериментальный мутатор переменной-члена теперь корректирует стек.
- Исправление № 39 — порядок элементов пути к классам теперь сохраняется при запуске из maven.
Пользователям при обновлении может потребоваться изменить свою сборку из-за удаления параметра inScopeClasses.
0,26
- Поддержка муравьев
- Новый экспериментальный мутатор для переменных-членов
- Исправление № 12 № 27 — больше не зависает, когда тестируемый код запускает потоки, не являющиеся демонами.
- Исправление № 26 — теперь предупреждает, если в пути к классам не найдена тестовая библиотека.
- Исправление № 30 — теперь возникают ошибки, если у мутировавших классов нет строки или исходной отладки.
- Исправление № 32 — теперь правильно обрабатываются предположения JUnit.
Известная проблема . Новый мутатор переменной-члена может вызывать ошибки синхронизации. Однако по умолчанию мутатор отключен, и сгенерированные ошибки корректно обрабатываются PIT.
0,25
- Поддержка TestNG (экспериментальная)
- Исправлена ошибка, из-за которой мутации во вложенных классах не были изолированы друг от друга.
- Исправление нарушенной изоляции пути к классам для проектов, использующих xstream.
- Улучшена обработка параметризованных тестов JUnit.
- Возможность ограничить мутации определенными корнями пути к классам (--mutableCodePaths)
- Возможность добавлять корни пути к классам, не запускаемым (--classPath) (экспериментально)
- Чтение значений конфигурации из XML (экспериментально)
- Возможность не выдавать ошибку, если мутаций не обнаружено.
- Последовательный порядок классов в отчете HTML.
- Статистика выводится в консоль
- Классы больше не загружаются во время первоначального сканирования пути к классам.
- Новый синтаксис, позволяющий легко включать все операции мутации.
0,24
- Поддержка JMockit
- Возможность вывода результатов в XML или CSV.
- Исправление №11
- Улучшен мутатор INLINE_CONSTS.
0,23
- Исправление проблемы 7: исходные файлы не найдены.
0,22
- Обновление Xstream до 1.4.1 для включения поддержки OpenJDK 7.
- Исправление №5 — повреждение символа новой строки в дочерних процессах.
- Возможность установки аргументов запуска дочернего процесса.
0,21
- Значительное улучшение производительности
- Поддержка powermock через загрузчик классов (требуется аннотация PowerMockIgnore) и Java-агент.
- Отчеты о незначительных ошибках и улучшения удобства использования.
- Исправлен серьезный дефект, связанный с анализом зависимостей.
- Зависимости PIT больше не размещаются в пути к классам при запуске через maven.
- Поддержка исключения определенных классов или тестов.
- Поддержка подробного журналирования
0,20
- Ограничить количество мутаций на класс
- Обновите xstream до 1.3.1
- Сделать доступным из maven Central
0,19
- Встроенные методы перечисления теперь исключены из мутации.
- Исправлена ошибка с отчетом о непроверенных классах.
- Поддержка исключения тестов, находящихся на расстоянии, превышающем определенное расстояние от класса.
- Поддержка исключения методов из анализа мутаций.
- Улучшения производительности
- Удалена поддержка запуска отчетов о мутациях из бегуна JUnit.
0,18
Проблемы
Прежде чем создавать проблемы или работать над ними, ознакомьтесь с нашими правилами управления проблемами.
Кредиты
Pitest — это в основном моя работа, но в него внесли вклад и многие другие.
Важные вклады, не видимые здесь, поскольку они были сделаны до того, как этот код был перенесен на github, включают:
- Николас Рускони - Задача муравья
- Струан Керр-Лидделл - Улучшения в HTML-отчете
- Стефан Пендорф — многочисленные улучшения, включая улучшенные мутаторы.
Хотя PIT не включает в себя какой-либо код из проекта Jumble (http://jumble.sourceforge.net/), база кода Jumble использовалась в качестве руководства при разработке некоторых аспектов PIT.