Pitest (también conocido como PIT) es un sistema de prueba de mutaciones de última generación para Java y JVM.
Lea todo al respecto en https://pitest.org
Lanzamientos
1.17.2
- #1362 Excluir lambdas en métodos excluidos por anotación (gracias @see-quick)
1.17.1
- #1353 Advierte sobre la futura eliminación de objetivos de SCM
- #1355 Actualizar ASM para soporte java 24
- #1359 Eliminar el uso del generador de reflexión basado en toString
- #1361 Soporte inicial para pruebas entre módulos en maven
1.17.0
- #1348 Extender el punto de extensión de transformación
- #1349 Mejorar la estabilidad del powermock
1.16.3
- #1345 Detección de ejecución retrasada mejorada en código de inicialización estática
- #1347 Agregar automáticamente directorios fuente de Kotlin estándar para proyectos maven
1.16.2
- #1340 Mostrar pruebas de cobertura para mutantes supervivientes en un informe html (gracias @vivganes)
- #1342/#1343 Corrige el registro engañoso de las rutas del historial (gracias @vivganes)
- #1344 Mutar el código de ejecución retrasada en enumeraciones y singletons
1.16.1
- #1329 Evitar conflictos de versiones con el objetivo agregado cuando los complementos usan Jackson
1.16.0
- #1311 - Incluir colecciones no modificables almacenadas directamente en campos en el filtro
+funmodifiablecollection
para código defensivo - #1319 - Usar variables de entorno de configuración segura
- #1322 - Agregar automáticamente -ea para habilitar afirmaciones
- #1321 - Expandir la interfaz BuildVerifier
El cambio de API en el n.° 1321 es compatible con versiones anteriores, pero es posible que los complementos escritos en 1.16.0 no funcionen con versiones anteriores.
1.15.8
- #1310 Filtrar mutaciones a Colecciones.inmodificable*
- #1309 Reemplazar campos en argLines importados desde la configuración segura
- #1308 Versiones de Bump maven vcs
El filtrado para #1310 está desactivado de forma predeterminada. Para activarlo agregue la cadena de filtro +funmodifiablecollection
.
1309 agrega una nueva propiedad maven parseSurefireArgLine
. Esto está configurado en verdadero de forma predeterminada, pero el análisis seguro de argline ahora se puede deshabilitar configurándolo en falso.
1.15.7
#1305 Cobertura no registrada para el código en el nombre del paquete com.sun*
A un filtro destinado a recoger clases JDK heredadas en el paquete "com.sun.*" le faltaba un '
, lo que provocaba que no se registrara cobertura de código si el código bajo prueba estaba en un paquete que comenzaba con "sun".
1.15.6
- #1295 eliminar temporalmente el seguimiento dinámico de llamadas
La invocación de seguimiento dinámico de llamadas para el código inicializador estático se reintroducirá cuando se haya implementado una lógica adicional para suprimir el filtrado de mutaciones para el código de ejecución retrasada.
1.15.5
- #1292 Las líneas de argumento tomadas de la configuración segura no tienen propiedades reemplazadas
1.15.4
- #1288 - Nuevo punto de extensión para permitir formatos de exportación de cobertura personalizados
- #1289 - Analizar la configuración de argline desde la configuración segura
- #1274 Siga las llamadas dinámicas de invocación al detectar métodos de inicializador estático únicamente
Tenga en cuenta que los usuarios de Maven que previamente han necesitado duplicar los parámetros argline entre los parámetros jvmArgs
y argline
de surefire y pitest pueden necesitar ajustar su configuración al actualizar. Las entradas enviadas a surefire ahora se agregarán automáticamente a pitest.
1.15.3
- #1271 - Verifica el estado del hilo antes de marcar al minion como muerto
1.15.2
- #1268 - Filtrar cheques no nulos de Lombok
- #1267 - Ampliar la API de prueba para permitir informes de errores durante el escaneo de prueba
#1267 garantizará que ahora se informen los errores previamente ocultos encontrados por el complemento JUnit5. Este es un cambio de API compatible con versiones anteriores. No tendrá ningún efecto hasta que se actualice el complemento JUnit5 para utilizar la API ampliada. El complemento actualizado no será compatible con versiones anteriores de pitest.
1.15.1
- #1260 Actualización a ASM 9.6 para compatibilidad con Java 22
- #1261 No cometer errores en archivos de historial de pitest < 1.15.0
1.15.0
- #1253 suprime las estadísticas de cobertura cuando se habilita la reducción de la prueba del historial
- #1252 agregue parámetros de funciones adicionales para maven para permitir que se agreguen funciones en la línea de comandos sin sobrescribir la lista existente
- #1251 ampliar las interfaces del historial (cambio importante)
- #1250 mejora el mensaje de error cuando no se pueden analizar cadenas de características
- #1248 ajuste de rendimiento: identificación de clase de prueba de retraso
- #1247 eliminación de código heredado
Como resultado de los cambios importantes en la API en el n.° 1251, el complemento arcmutate kotlin debe actualizarse a 1.1.0 al actualizar a pitest 1.15.0
1.14.4
#1246 Priorizar la prueba de eliminación previa al utilizar archivos históricos
1.14.3
- #1239 Soporte para grupos excluidos separados por comas (gracias @johnathana)
- #1243 Ordenar explícitamente classpath en el archivo histórico para garantizar la coherencia entre ejecuciones
- #1245 Evite el registro confuso de ejecuciones de análisis incrementales ficticias
1.14.2
- #1221 - Cálculo de porcentaje unificado (gracias @Vampire)
- #1218: Seguridad de subprocesos para la recopilación de resultados cuando las pruebas se ejecutan en paralelo (gracias @Vampire)
- #1225 - Evitar errores cuando se incluyen archivos no comprimidos en classpath
- #1229 - Mutar iterables a lista vacía
- #1227/1232 - Reparar la interfaz MethodMutator para que dependa de tipos abstractos
1.14.1
- #1215 Aplicar reescrituras de cobertura al agregar informes
- #1219 Asegúrese de intentar aplicar el filtrado de recursos primero (gracias @Vampire)
1.14.0
- #1213 Filtrar equivalente dividir por -1 mutantes matemáticos
- #1212 Agregar automáticamente el lanzador de plataforma junit
#1212 Resuelve en gran medida el problema de mantener sincronizada la versión del complemento pitest-junit5 con la versión junit5 para usuarios de maven.
Cuando se usa con la versión 1.2.0 del complemento pitest-junit5, pitest ahora seleccionará automáticamente una versión de junit-platform-launcher que sea compatible con la versión de junit5 utilizada por el sistema bajo prueba.
Siguen existiendo problemas para los usuarios de Gradle que aún pueden encontrar compatibilidades de API al usar la versión 1.2.0 del complemento pitest-junit5. Sin embargo, ahora se pueden resolver agregando manualmente la versión correcta de junit-platform-launcher al classpath.
Se espera que una versión futura del complemento pitest gradle implemente una solución similar a la solución pitest-maven.
1.13.2
- #638 Asegúrese de que el % se muestre como 100 cuando todos los mutantes hayan muerto (gracias @Vampire)
- #1197 Mostrar información de inicio al iniciar sesión configurado en VERBOSE_NO_SPINNER (gracias @Vampire)
- #1198 Mejoras en el registro (gracias @Vampire)
- #1200 Advertir si la ejecución de pruebas paralelas está habilitada durante la recopilación de cobertura (gracias @Vampire)
- #1199 Cambie a System.nanoTime para conocer los tiempos de prueba (gracias @Vampire)
- #1207 Soporte para la eliminación de anotaciones a nivel de clase
1.13.1
- #1194 Soporte
**.
patrón en globos (gracias @Pfoerd)
1.13.0
- #1188 Permitir que los mutadores produzcan múltiples mutaciones distintas
- #1190 Proporcionar priorizador de pruebas a los interceptores
- #1191 Habilitar mutación de anotaciones de métodos y campos.
1.12.0
- #1186 Nuevos puntos de extensión
1.11.7
- #1178 Las comas en el nombre de la prueba de eliminación interrumpen la exportación csv (gracias @Bonajo)
- #1177 Aplicar características en un orden consistente
- #1176 Actualización a ASM 9.5
1.11.6
- #1171 Evitar la doble creación de instancias de funciones
- #1170 Actualizar enlaces a https (gracias @romani)
1.11.5
- #1167 Corrija el rendimiento deficiente del análisis estático para métodos grandes
- #1166 Actualizar el enlace web más importante a https (gracias @romani)
1.11.4
- #1161 Prevenir clinit duplicado cuando hay clinit sintético presente
- #1162 Agregar automáticamente directorios fuente de Kotlin a maven cuando estén presentes
1.11.3
- #1159 Incluir solo clases mutadas en las estadísticas de cobertura de línea
1.11.2
- #1157 Informar solo líneas de código de destino
Las estadísticas de cobertura de línea informadas en la consola incluían líneas de código para todo el proyecto, incluso cuando se aplicaron filtros. Esto dio lugar a puntuaciones de cobertura dramáticamente bajas.
1.11.1
- #1156 Evitar que las líneas sintéticas se cuenten en la cobertura
1.11.0
- #1138 No mute la caída redundante a los casos de cambio predeterminados
- #1150 Nuevos puntos de extensión
Tenga en cuenta que el número 1150 incluye cambios importantes en la interfaz que pueden requerir actualizaciones de complementos de terceros.
1.10.4
- #1134 Agregar el parámetro
excludedRunners
a la interfaz de línea de comando y Ant - #1131 Admite la sintaxis segura de evaluación tardía de propiedades para arglines
1.10.3
- #1128 Corrección de errores: las líneas con entradas de depuración repetidas se cuentan dos veces
1.10.2
- #1125 Corrección de errores: los métodos lambda sintéticos no se tratan como líneas de código
1.10.1
- #1124 Se corrigió el error introducido en 1.10.0 donde los métodos puente se trataban como líneas de código válidas.
1.10.0
- #1067 Soporte mejorado de Quarkus y Roboelectric
- #1116 Opción para excluir las líneas 0 y 1 de todas las clases.
- #1118 Detectar complementos faltantes
Como resultado del n.º 1067, es importante que las mutaciones solo se creen para una única clase para cada JVM. Por lo tanto, se eliminó el punto de extensión MutationGrouper
, ya que permitía violar esta restricción. Ya no se admiten complementos de terceros que utilicen esta extensión.
Las versiones también incluyen múltiples cambios en las estructuras de datos internas. Es posible que sea necesario actualizar cualquier complemento de terceros que dependa de estas estructuras.
1116 proporciona una forma sencilla de excluir el código generado automáticamente que no es detectado por los otros filtros de pitest. Está deshabilitado de forma predeterminada, ya que puede excluir código que es válido para mutación en algunas situaciones, pero se puede habilitar agregando la cadena de característica +nofirstline
.
1.9.11
- #1105 El agregador resuelve el archivo incorrecto para archivos kotlin fuera del paquete con el mismo nombre
- #1111 Corregir error tipográfico en el registro (gracias @wangbo15)
1.9.10
- #1106 No reemplace Map.of con Collections.emptyMap
- #1109 Relaja la verificación de depuración del archivo fuente
1.9.9
- #1098 Incluir valores de casos en descripciones de mutaciones de cambio
1.9.8
- #1094 Buscar archivos fuente fuera de los directorios de paquetes
Agrega soporte para lenguajes como Kotlin donde los archivos fuente pueden no estar dentro de una estructura de directorio que coincida con su paquete. Tenga en cuenta que si el mismo nombre de archivo aparece en más de una ubicación, pitest no puede garantizar la resolución del archivo correcto.
1.9.7
- #1091 - Nombres de clases de escape en XML de cobertura
1.9.6
- #1092 - Actualización a ASM 9.4
- #1091 - XML de cobertura de escape adecuado
- #1088 - Eliminar el parámetro de distancia de dependencia no utilizado
- #1085 - No generar informes de marca de tiempo de forma predeterminada
Tenga en cuenta que el número 1085 cambia el comportamiento predeterminado, por lo que los informes ya no se escriben en directorios con marca de tiempo de forma predeterminada. Si necesita este comportamiento, deberá habilitarlo explícitamente.
1.9.5
- #1078 - Modificar la interfaz del actualizador de configuración
- #1079 - Evite el registro de JBoss de forma predeterminada
1078 es un cambio importante en la interfaz, pero se incluye en una versión puntual ya que se cree que actualmente no hay clientes externos.
1.9.4
- #1063 - Mejorar el filtrado de mutantes de retorno equivalentes
- #1064 - Eliminar mutadores de valor de retorno heredados y grupo de valores predeterminados antiguos
- #1066 - Ampliar el filtrado del inicializador estático
- #1070 - Eliminar el agente jacoco si está presente en argline
1.9.3
- #1052 - Admite la propiedad maven argLine y argLines de cadena única
- #1054 - Proporcionar control sobre la adición automática de -Djava.awt.headless=true
- #1055 - Opción para configurar automáticamente el número de subprocesos
- #1056 - Establecer tiempo de espera para la comunicación por socket
- #1058 - Establecer valores predeterminados para la codificación de entrada y salida para API programática
1054 Mueve la compatibilidad con la adición automática de headless=true (para evitar que se robe el foco del teclado en Mac) a una función. Está habilitado de forma predeterminada, pero se puede deshabilitar agregando -MACOS_FOCUS
a la cadena de características.
1055 agrega la opción de adivinar el número apropiado de subprocesos para la máquina actual agregando +auto_threads
la cadena de características. Esta opción está deshabilitada de forma predeterminada y diseñada para uso local. No se recomienda su uso en un servidor CI.
1.9.2
- #1050 - Verifique que los minions estén vivos para evitar que el proceso se cuelgue
1.9.1
- #1047 La mitigación del proceso intermitente se bloquea
1.9.0
- #1035 - Mejorar el consumo de memoria de cobertura
- #1038 - Compatibilidad con el complemento del sitio Maven 3.12.0+ (gracias IO)
- #1040 - Cálculo de cobertura de JUnit 5 más rápido
- #1040 - Eliminar el parámetro
dependencyDistance
Como resultado del número 1040, cualquier complemento de prueba externo (por ejemplo, JUnit 5, TestNG, arcmutate accelerator) debe actualizarse a una versión compatible (1.0.0) al actualizar.
Los archivos de historial de versiones anteriores son incompatibles y deben eliminarse al actualizar.
Versiones anteriores
1.8.1
- #637 - Admite diferentes codificaciones de entrada y salida (gracias @qxo)
- #705 - Permitir + en rutas de archivos (gracias @ali-ghanbari)
- #903 - Filtrar mutantes en constructores singleton
- #1025 - Filtrado de interruptor de cadena de reelaboración
- #1027 - Reelaborar el filtrado de afirmación y eliminar el mecanismo de filtro heredado
- #1030 - Filtrar mutaciones basura del interruptor de enumeración
1.8.0
- #1017 - Mejorar la detección de bucle infinito estático
- #1020 - Vuelva a trabajar la biblioteca de coincidencias NFA y pruebe con el filtrado de recursos
- #1022 - Prueba de quarkus de soporte
1.7.6
- #1008 Actualice ASM para soporte inicial de Java 19
- #1016 Falla limpiamente cuando no se proporciona ningún complemento de prueba que funcione
- #1015 Mover el soporte de TestNG fuera del código base principal
Como resultado del número 1015, el complemento TestNG ahora debe configurarse cuando se usa pitest en bases de código probadas por TestNG. En versiones anteriores, la compatibilidad se incluía automáticamente.
1.7.5
- #625 / #983 Agregación de informes fija (gracias @therealryan y @aurelien-baudet)
- #985 Manejar vacío infalible excluye
- #993 Mover mutadores rv a un complemento externo
- #994 / #995 Filtro equivalente en caja que devuelve verdaderos mutantes en bloques de prueba
- #968 / 997 Mejorar el filtrado de mutantes de retorno vacío equivalentes
- #999 / 1003 Nuevo parámetro para localizar la raíz de proyectos de múltiples módulos
Como resultado del n.º 993, cualquiera que desee utilizar los operadores de vehículos recreativos orientados a la investigación debe configurar el complemento pitest-rv; sin embargo, estos mutadores no se recomiendan para uso general.
1.7.4
- #965 - Mutador BigDecimal (gracias @MarcinNowak-codes)
- #750 - Soporte -DskipTests desde la línea de comando (gracias @marwin1991)
1.7.3
- #952 El mapa mutado regresa al
emptyMap
en lugar de nulo - #954 Permitir que se excluyan los mutadores
- #957 Filtrar mutaciones equivalentes a Boolean.TRUE y Boolean.FALSE
1.7.2
- #943 Cambiar mutadores predeterminados: reemplazar el condicional de negación por el condicional de eliminación
- #946 La secuencia mutada vuelve a la secuencia vacía en lugar de nula
1.7.1
- #932 Mejorar las descripciones de las mutaciones de cambio
- #934 Configurar la detalle de la salida de la consola
- #940 Ocultar características internas
- #942 Solución para operadores de mutación de terceros no agregados al classpath del cliente
- #939 Mejorar el almacenamiento en caché de la recuperación de código de bytes
1.7.0
- #923 Cambios en la interfaz interna
- #930 Mutadores conectables
Debido a cambios internos, algunos complementos de terceros pueden ser incompatibles con esta versión.
Todos los archivos históricos deben eliminarse antes de actualizar.
Los nombres de los mutadores de eliminación de condicionales han cambiado ligeramente como resultado del n.º 930 y es posible que sea necesario actualizarlos en los scripts de compilación si se activan explícitamente.
1.6.9
- #922 Filtrar mutantes stream.empty equivalentes en llamadas flatMap
- #921 Orden de garantía de operadores de mutación.
- #919 Filtrar mutaciones basura en registros java
1.6.8
- #917 - Agregar método para recuperar todos los identificadores de mutadores para pitclipse y otras herramientas
- #913 - Aumentar ASM a 9.2
1.6.7
- #897 Corrija la descripción al reemplazar el valor con un conjunto vacío
- #900 Admite múltiples motores de prueba
- #822 Se corrigió la regresión de NPE al leer el manifiesto de classpath
- #798 Se corrigió la regresión del soporte de parámetros jvmArgs a través de maven
- #797 Arreglar la regresión de la cobertura de línea en la consola
Como resultado del número 900, el parámetro testPlugin
ya no está disponible, pero pitest continuará aceptándolo sin errores para esta versión. Pitest utilizará cualquier motor de prueba proporcionado en el classpath, recurriendo al soporte integrado JUnit4 cuando otros motores de prueba no puedan manejar la clase.
1.6.6
- #891 - Arreglar el rendimiento del historial
- #889 - No escanear classpath en busca de historial cuando no se proporciona la opción
- #887 - Reparar CSS para tiempos de espera y errores de memoria
- #888 - Eliminar mutantes máximos difuntos por parámetro de clase
- #890 - Eliminar el parámetro de inicializadores estáticos mutados inactivos
1.6.5
- #882 Evite ejecutar pruebas cuando no sean posibles mutantes
1.6.4
- #862 Actualización de ASM para Java 16
1.6.3
- #853 Arreglar la verificación de funciones que no distingue entre mayúsculas y minúsculas
- #855 Poner los datos de cobertura a disposición de los interceptores
- #857 Pasar datos stderr/out por línea (gracias @kgeilmann)
- #858 La prueba de corrección no falla cuando maxSurviving es 0 (gracias @alexkoltz)
- #860 Corregir mutaciones basura al probar con recursos en java 11+
1.6.2
- #770 y #746 Corregir NPE durante la etapa de cobertura (gracias @LaurentTho3)
- #849 Hacer que los nombres de las funciones no distingan entre mayúsculas y minúsculas
- #844 Ampliar el sistema de funciones para trabajar con los oyentes
- #842 Poner las opciones de informe a disposición de los oyentes
1.6.1
- Automatizar el lanzamiento a maven central
- #774 Estadística de fuerza de prueba (gracias @alex859)
- #798 Habilite el paso de argumentos de jvm desde la línea de comando (gracias @yfrolov)
- #797 Agregar cobertura de línea a la consola (gracias @qxo)
- #822 Mitigar la NPE en caso de dependencia accidental (gracias @szpak)
1.5.2
- #749 Soporte ANT para la opción fullMutationMatrix (gracias @ayaankazerouni)
- #752, #755, #757 Mejoras en la versión y mejoras en el código heredado (gracias @AlexElin)
- #758 Lata correcta para paquetes de prueba (gracias @nicerloop)
- #765 Arreglar el análisis incremental para TestNG (gracias @StefanPenndorf)
1.5.1
- #737 Agregue el indicador skipFailingTests a la herramienta de línea de comando (gracias @szpak)
- #739 Corregir error tipográfico en mensaje de error (gracias @vmellgre)
- #745 Mejorar el mensaje de error cuando junit no está en classpath (gracias @szpak)
- #748 Actualice el conjunto a 8.0 para compatibilidad con Java 14
1.5.0
- #556 - No mutar los constructores de enumeraciones
- #726 - Asegúrese de que se registre la cobertura del inicializador estático
- #734/#735/#736 - Reemplazar interfaces heredadas con API de Java (gracias @AlexElin)
1.4.11
- #683 - Filtrar prueba con recursos antes de filtrar el código en línea (gracias @Vampire)
- #686 - No imprima el nombre de la clase dos veces para unidades de prueba no divisibles (gracias @Vampire)
- #672 - No incluya el directorio actual en la ruta de clase minion (gracias @Vampire)
- #692 - Agregue propiedad = 'skipPitest' para omitir el complemento de atributo inn maven (gracias @cjgwhite)
- #697 - Compatibilidad con TestNG 7.0.0 (gracias @kris-scheibe)
- #666 - UOI4 informa nombre de campo mutado (gracias @LaurentTho3)
- #716 - Actualice el conjunto a 7.3.1 (requerido para Java 14)
- #710 - Usa el nuevo mutador configurado por defecto
1.4.10
- #534 Bloques más pequeños para una orientación de prueba más precisa (gracias @jon-bell)
- #664 Arreglar la clave del mapa A0D2 (gracias @Vampire)
- #656 Caracteres de escape en métodos de inicio para informes html (gracias @Vampire)
- #404 Filtrar mutaciones basura para llamadas Objects.requireNonNull generadas por el compilador
1.4.9
- #613 / #623 - Solución de problemas de powermock (gracias @jon-bell)
- #614 - Mensaje de error mejorado cuando no hay complemento de prueba (gracias @szpak)
- #620 - Admite procesadores de anotaciones como Micronaut que no configuran el nombre del archivo de depuración
1.4.8
- #597 Corrección de error en la cobertura cuando hay una gran cantidad de clases (gracias @jon-bell)
- #601 Evite robar el foco del teclado en macos (gracias @maxgabut)
1.4.7
- #545 - Cálculo de cobertura más rápido (gracias @jon-bell)
1.4.6
- #580 - actualizar a ASM 7.1
- #573 - Soporte Ant para
testPlugin
y failWhenNoMutations
(gracias @mduggan) - #555 - Permitir elementos vacíos en la configuración de Maven (gracias @maxgabut)
1.4.5
- #557 - Problemas al ejecutar Java 8
1.4.4
- #518 - Mutador experimental BigInteger (gracias @ripdajacker)
- #513 - Ordenar mutadores en el informe html (gracias @ThLeu)
- #553 - Mutadores clásicos de la literatura (gracias @LaurentTho3)
- #528 - Se agregó la opción skipFailingTests del complemento maven (gracias @nicerloop)
1.4.3
- #510 - Calcular la matriz de prueba de mutación (gracias @nrainer)
- #519 - Soporte para Java 11
1.4.2
- #500 - Soporte para classpaths grandes con la nueva opción
useClasspathJar
(gracias @jqhan)
1.4.1
- #446 - Ignorar directorios vacíos al agregar informes (gracias @maxgabut)
- #457 - Arreglar el directorio base en proyectos de múltiples módulos (gracias @sarahBuisson y @giggluigg)
- #471 - Soporte básico de Java 11
- #477 - Byte nulo en xml (gracias @maxgabut)
- #480 - Permitir la agregación de informes con marca de tiempo (gracias @maxgabut)
- #495 - Mover resumen al final de la salida de la consola (gracias @pedrorijo91)
- #499 - Corrección para mutantes equivalentes en nuevos mutadores de valor de retorno
1.4.0
- #445 - Aumentar la versión mínima de Java admitida a 8
- Cambiar a ASM 6.1.1
- #448 Informe agregado basado en módulo (gracias @sarahBuisson)
- #462 Nombres de pruebas de escape en xml de cobertura (gracias @maxgabut)
1.3.2
- #433 - Informes agregados a través de maven (gracias @rchargel)
- #438 - Pruebas de filtrado a nivel de método (gracias @ftrautsch)
- #439 - El mutador de retorno de primitivas no maneja bytes
- #380 - Elimina la dependencia de xstream para mejorar la compatibilidad con Java 9
- #414 - Reemplazar el almacén de historial de xstream (gracias @kiftio)
Tenga en cuenta al actualizar que los archivos de historial generados por versiones anteriores no son compatibles con la versión 1.3.2 y superior.
1.3.1
- #434 - Advertencia de seguridad de XStream
1.3.0
- #196 - Aumentar la versión mínima de Java a 7
- #425 - Ampliar la detección para cada uno
- #428 - Agregar parámetro de
excludedTestClasses
- #379 - Eliminar soporte para inicializadores estáticos mutantes
- #432 - Agregar funcionalidad de complemento de exportación a pitest
- #427 - Mejores mutadores de valores de retorno
- #429 - Simplifica la API de prueba
428 cambia el comportamiento existente del filtro Clases excluidas. Anteriormente, esto excluía que las clases se mutaran y se ejecutaran como pruebas, lo que puede requerir cambios para algunas personas al actualizar.
Como resultado de 429, las pruebas TestNG ya no se detectarán automáticamente; el nuevo parámetro testPlugin
debe establecerse explícitamente en "testng".
1.2.5
- #407: el objetivo de SCM no se puede ejecutar desde el módulo (gracias @sbuisson)
- #256 - El estilo en línea viola la Política de seguridad de contenido (gracias @kiftio)
- #403 - No hay CSS en el informe html visto desde jenkins (gracias @kiftio)
- #409 - Mutación basada en cambios en las ramas (gracias @sbuisson)
- #418 - Evitar incrementos de bucle
- #424 - Evitar para cada código
- #389 - Ampliar la coincidencia de controles nulos implícitos
1.2.4
- #397 - Informar las razones por las que se omitieron los módulos de Maven
- #389 - Filtrar comprobaciones nulas getClass basura en lambdas
- #400 - Actualización a ASM 6.0
1.2.3
- Actualización a ASM 6 para compatibilidad con Java 9
- #388 - Marcar el complemento maven como seguro para subprocesos
- #362 - Suprimir mutante equivalente común en métodos iguales
1.2.2
- #367 - El análisis estático no puede encontrar clases principales en algunos proyectos
1.2.1
- #347 - Evite el código generado automáticamente (por ejemplo, por lombok) anotado con @Generated
- #285 - Evite los condicionales generados por el compilador al cambiar la cadena. (gracias @Kwaq)
- #218 - Nuevo "receptor desnudo" / mutador de cadena de método. (gracias @UrsMetz)
- #354/#356 - Nuevo punto de extensión más cambios para reducir el costo del acceso aleatorio al código de bytes para análisis estático
- #353 - Detección de código de inicializador estático mejorada
- #364 - Filtrar bucles infinitos mediante análisis estático
- #365 - Sistema de configuración de complementos
(La nota n.° 347 no detectará javax.annotaion.Generated
ya que solo tiene retención de fuente).
1.2.0
- #318 - Separe el código del proceso principal de la ruta de clase del cliente de código compartido
- #295 - Ignorar pruebas abstractas de TestNG
- #215 - Selección automática de clases objetivo para maven
- #314 - No fallar en módulos maven sin pruebas o código
- #306 - No fallar cuando solo hay interfaces en el conjunto de cambios
- #325 - Clase anónima en prueba de Spock que causa error
- #334 - Compatibilidad con versiones recientes de TestNG
- #335 - Cobertura incorrecta con powermock
Nota: a partir de esta versión, el complemento maven determinará automáticamente qué clases mutar en lugar de asumir que los nombres de los paquetes coinciden con la identificación del grupo.
1.1.11
- #269 - No es posible romper la construcción de 1 mutante
- #271 - Incluir descriptor de método en la cobertura de línea
- #170 - Exclusión por corredor JUnit
- #291 - Manejar vacío excluye
- #287 - Verifique la jerarquía de clases para ver las anotaciones
- #289 - Opción para proporcionar classpath desde el archivo
1.1.10
- #260 - Soporte inicial para mutar el código Kotlin
- #264 - Soporte para yatspec runner (gracias @theangrydev)
- Romper la construcción cuando sobrevivan más del
maxSurviving
de mutantes supervivientes.
1.1.9
- #132 - Permitir el análisis solo de los archivos tocados en la última confirmación (gracias Tomasz Luch)
1.1.8
- #239 - Proporcionar un acceso directo para configurar archivos de historial a través de maven
- #240 - Soporte para expresiones regulares (gracias sebi-hgdata)
- #243 - Usa puertos efímeros para comunicarte con minions
1.1.7
- #196 - Aumentar la versión mínima de Java a 1.6
- #231 - El proceso se bloquea
1.1.6
- #10 - Agregar objetivo de informe maven (gracias jasonmfehr)
- #184 - Eliminar función de archivo de proyecto no documentado
- #219 - Mejora del rendimiento para la generación de informes (gracias tobiasbaum)
- #190 - Permitir propiedades personalizadas para complementos
Tenga en cuenta que esta versión contiene un problema conocido (n.º 231). Por favor actualice.
1.1.5
- Solución para el problema #148: Stackoverflow con proveedores de datos TestNG al usar JMockit
- Solución para el problema #56: No informar incompatibilidades junit
- Solución para el problema #174: linecoverage.xml no válido con inicializadores estáticos
- Solución para el problema #183: No se pueden ejecutar pruebas de GWTMockito
- Solución para el problema #179:
includeLaunchClasspath=false
roto en Windows - #173 - Leer exclusiones y grupos de la configuración segura de Maven
1.1.4
- #157 - Bandera de soporte maven -DskipTests (gracias lkwg82)
- Solución para el problema #163: no debe incluir el árbol de prueba en el umbral de cobertura
- #166 - Permitir exclusiones de classpath para el complemento maven (gracias TomRK1089)
- #155 - Restaurar la compatibilidad con Java 5
- Solución para el número 148: problema con JMockit + TestNG (gracias estekhin y KyleRogers)
1.1.3
- Solución para el problema #158: Pruebas excluidas incorrectamente de mutantes
- Solución para el problema #153: el complemento SCM no funciona para maven 2
- Solución para el problema #152: no funciona con IBM jdk
1.1.2
- Solución para el n.° 150: cobertura de línea inferior a la reportada
1.1.1
- Cobertura basada en bloques (correcciones 79/131)
- Finalizar el soporte para ejecutar Java 5 (el código de bytes de Java 5 aún es compatible)
- Omitir bandera para módulos maven (#106)
- Deja de declarar TestNG como una dependencia
- Nuevo mutador de propagación de parámetros (gracias UrsMetz)
1.1.0
- Cambie el esquema para identificar mutantes (ver n.° 125)
- Admite API de prueba alternativas a través del sistema de complementos
- Informar de error cuando el nombre del mutador proporcionado no coincide (gracias artspb)
- Informar códigos de salida del proceso de cobertura infantil (gracias KyleRogers)
- Trate las pruebas JUnit con anotación ClassRule como una unidad (gracias devmop)
Tenga en cuenta que esta versión invalida cualquier archivo histórico almacenado o resultado de sonda.
1.0.0
- Esquema de numeración de versiones del interruptor
- Actualice a ASM 5.0.2
- Solución para el problema #114: no se ejecuta para Java 8 cuando se establece el indicador -parameters
- #99 Admite propiedad adicionalClasspathElements en el complemento maven (gracias artspb)
- #98 No mutes java 7, prueba con recursos (gracias @artspb)
- # 109 eliminación extendida del mutador condicional (gracias @vrthra)
0,33
- Mover a Github
- Actualización de ASM para admitir el código de bytes de Java 8 (gracias a "iirekm")
- Soporte parcial para categorías JUnit (gracias a "chrisr")
- Nuevo mutador de eliminación de incrementos (gracias a Rahul Gopinath)
- Mejoras menores en el registro (gracias a Kyle Rogers, también conocido como Stephan Penndorf)
- Solución para el problema #92: soporte roto de maven 2
- Solución para el problema #75: pruebas ignoradas incorrectamente en clases con @Ignore y @BeforeClass/@AfterClass
0,32
- restaura la compatibilidad con java 7
- nuevo eliminar mutador condicionales
- soporte para mutar inicializadores estáticos con TestNG
- aislar adecuadamente los classpaths cuando se ejecuta a través de Ant
- romper se basa en el umbral de cobertura
- permitir que se especifique JVM
- Admite estrategias de selección de pruebas definidas por el usuario.
- Admite formato de salida definido por el usuario.
- Admite priorización de pruebas definida por el usuario.
- solución al problema que bloquea el uso con Robolectric
Tenga en cuenta que la configuración para proyectos basados en Ant cambia en esta versión. Consulte configuración de hormigas para obtener detalles sobre el uso.
0,31
- Compatibilidad con Maven 2 restaurada
- Cálculo de cobertura de línea mucho más rápido
- Solución para el error #78: Error cuando las tiendas de prueba de PowerMockito se simulan como miembro
Esta versión también cambia una serie de detalles de implementación interna, algunos de los cuales pueden ser de interés/importancia para quienes mantienen herramientas que se integran con PIT.
Las mutaciones ahora tienen un alcance interno como se describe en https://groups.google.com/forum/#!topic/pitusers/E0-3QZuMYjE
Se ha introducido una nueva clase (org.pitest.mutationtest.tooling.EntryPoint) que elimina algunas de las duplicaciones que existían en las distintas formas de iniciar el análisis de mutaciones.
0,30
- Soporte para pruebas de Spock parametrizadas
- Soporte para pruebas JUnitParams
- Solución para el problema #73: las pruebas parametrizadas de JUnit que llaman a silenciar durante la configuración fallan durante la fase de mutación
- Corrección del problema #63: la tarea ant falla cuando se proporcionan opciones vacías
- Capacidad para anular las opciones de Maven desde la línea de comando
- Capacidad de fallar en una compilación si no alcanza una puntuación de mutación determinada
- Mejora del rendimiento cuando las pruebas utilizan anotaciones @BeforeClass o @AfterClass
- Programación ligeramente mejorada en múltiples subprocesos
- Soporte mejorado para múltiples proyectos de Maven.
- Integración con control de fuente para usuarios maven
0,29
- Análisis incremental (--historyInputLocation y --historyOutputLocation)
- Detección de código en línea activada de forma predeterminada
- Registro más silencioso por defecto
- Soporte mejorado para Java 7
- Actualización de ASM de 3.3 a 4
- Solución de problemas de concurrencia durante el cobro de cobertura.
- Solución para el punto 53: problemas con las versiones de instantáneas junit
- Solución para el problema #59: dependencias duplicadas establecidas a través de maven
0,28
- Detección de bloque finalmente en línea (--detectInlinedCode)
- Nuevo mutador de declaración de cambio experimental (contribuido por Chris Rimmer)
- No mutar las clases de Groovy
- Solución para el problema #33: configure user.dir para que coincida con surefire
- Solución para el problema #43: opcionalmente, suprime las carpetas con marca de tiempo (--timestampedReports=true/false)
- Solución para el punto 44: excepción de modificación simultánea al recopilar cobertura
- Solución para el problema #46: configuración incorrecta de indicadores por tarea hormiga
- Menor huella de memoria para el proceso principal
- Recopilación de cobertura más rápida para bases de código grandes
- Escaneo de classpath más rápido para bases de código grandes
- Soporte para métodos de la suite JUnit 3
- Correcciones para la detección incorrecta de pruebas JUnit 3
Problema conocido : la solución #33 puede no resolver el problema para los usuarios de Maven 2.
La detección de código Groovy aún no se ha probado con Groovy 2, lo que puede generar códigos de bytes sustancialmente diferentes a las versiones anteriores.
0,27
- Reportajes mucho más bonitos.
- Ahora evita mutar declaraciones de afirmación
- Se eliminó la opción inScopeClasses: use targetClasses y targetTests en su lugar
- Corrección del uso del 100 % de la CPU cuando la JVM secundaria falla
- Corrección para #35 #38: el mutador de variable miembro experimental ahora corrige la pila
- Solución para el problema #39: el orden de los elementos de classpath ahora se mantiene cuando se ejecuta desde maven
Es posible que los usuarios que actualizan necesiten modificar su compilación debido a la eliminación del parámetro inScopeClasses
0,26
- Soporte para hormigas
- Nuevo mutador experimental para variables miembro.
- Solución para #12 #27: ya no se bloquea cuando el código bajo prueba inicia subprocesos que no son demonios
- Solución para el n.° 26: ahora advierte cuando no se encuentra ninguna biblioteca de prueba en classpath
- Corrección para el punto 30: ahora hay errores si las clases mutadas no tienen línea o fuente de depuración
- Solución para el punto 32: ahora maneja correctamente las suposiciones de JUnit
Problema conocido : el nuevo mutador de variable miembro puede provocar errores en errores sincronizados. Sin embargo, el mutador está deshabilitado de forma predeterminada y PIT maneja correctamente los errores generados.
0,25
- Soporte TestNG (experimental)
- Se solucionó el problema por el cual las mutaciones en clases anidadas no estaban aisladas entre sí.
- Corrección del aislamiento de classpath roto para proyectos que utilizan xstream
- Manejo mejorado de pruebas parametrizadas JUnit
- Capacidad de limitar mutaciones a raíces de classpath específicas (--mutableCodePaths)
- Posibilidad de agregar raíces de classpath sin inicio (--classPath) (experimental)
- Leer valores de configuración de XML (experimental)
- Opción para no arrojar error cuando no se encuentran mutaciones
- Orden coherente de clases en el informe HTML
- Estadísticas escritas en la consola
- Las clases ya no se cargan durante el escaneo inicial de classpath
- Nueva sintaxis para habilitar fácilmente todas las operaciones de mutación
0,24
- Soporte JMockit
- Opción para generar resultados en XML o CSV
- Solución para el n.° 11
- Mutador INLINE_CONSTS mejorado
0,23
- Solución al problema 7: archivos fuente no ubicados
0,22
- Actualización de Xstream a 1.4.1 para habilitar la compatibilidad con OpenJDK 7
- Solución para el punto 5: corrupción del carácter de nueva línea en procesos secundarios
- Capacidad para establecer argumentos de inicio de procesos secundarios
0,21
- Mejoras significativas en el rendimiento
- Soporte para powermock a través del cargador de clases (requiere anotación PowerMockIgnore) y el agente Java
- Informes de errores menores y mejoras de usabilidad.
- Corrección de un defecto importante en torno al análisis de dependencia
- Las dependencias de PIT ya no se colocan en classpath cuando se ejecuta a través de maven
- Soporte para excluir ciertas clases o pruebas.
- Soporte para registro detallado
0,20
- Limitar el número de mutaciones por clase.
- Actualice xstream a 1.3.1
- Poner a disposición desde maven central
0,19
- Los métodos de enumeración integrados ahora están excluidos de la mutación.
- Se corrigió el error relacionado con el informe de clases no probadas.
- Soporte para excluir pruebas mayores a una cierta distancia de la clase
- Soporte para excluir métodos del análisis de mutaciones.
- Mejoras de rendimiento
- Se eliminó el soporte para iniciar informes de mutación desde JUnit runner.
0,18
- Primer lanzamiento público
Asuntos
Consulte nuestras reglas de gestión de problemas antes de crear o trabajar en problemas.
Créditos
Pitest es principalmente obra mía, pero se ha beneficiado de las contribuciones de muchos otros.
Las contribuciones notables que no son visibles aquí ya que se realizaron antes de que este código se migrara a github incluyen
- Nicolas Rusconi - Tarea de hormigas
- Struan Kerr-Liddell - Mejoras en el informe html
- Stephan Pendorf: múltiples mejoras, incluidos mutadores mejorados
Aunque PIT no incorpora ningún código del proyecto Jumble (http://jumble.sourceforge.net/), el código base de Jumble se utilizó como guía al desarrollar algunos aspectos de PIT.