suiteclasses asserts java unit-testing mutation-testing pitest

java - asserts - junit junit4



Las pruebas de JUnit pasan pero PIT dice que la suite no es verde (1)

Al intentar ejecutar una prueba de mutación PIT, aparece el siguiente error:

mutationCoverage falló: Todas las pruebas no pasaron sin mutación al calcular la cobertura de la línea. Las pruebas de mutación requieren una suite verde.

Las pruebas se ejecutan bien cuando hago una compilación de prueba normal, pero al ejecutar la fase de pruebas de mutación, supuestamente fallan, pero no se proporcionan detalles sobre por qué. He revisado las razones enumeradas en las preguntas frecuentes de PIT Testing pero todavía no tengo idea de qué podría estar mal.

Lo intenté:

  • agregando la opción -Dthreads = 1 para descartar cualquier problema de subprocesos múltiples
  • No se pudo encontrar ninguna propiedad del sistema única las pruebas de par que están fallando
  • Las pruebas no son ignoradas bajo corridas normales.

¿Cuáles son algunas otras cosas que debería intentar? ¿O otras formas de depurar lo que podría estar pasando aquí?


Las causas comunes de las pruebas que fallan en la etapa de cobertura son

  1. Las pruebas de captura de PIT no incluidas / están excluidas en la configuración de prueba normal
  2. Las pruebas se basan en una variable de entorno u otra propiedad establecida en la configuración de prueba, pero no en la configuración más difícil
  3. Las pruebas tienen una dependencia de orden oculta que no se revela durante la ejecución de prueba normal
  4. A PIT no le gusta algo en tu pila de tecnología - posiblemente un corredor de prueba JUnit

Suena como si hubieras eliminado 1 y 2. por lo que deja 3 y 4.

Las dependencias de orden de prueba pueden ser difíciles de detectar. Si la respuesta es sí a cualquiera de estas preguntas, puede tener una.

  • ¿Tu base de código incluye un estado estático mutable? (por ejemplo, en singletons)
  • ¿Sus pruebas llegan a una base de datos (en memoria o de otro tipo) donde es posible que el estado persista entre las pruebas?
  • ¿Tus pruebas modifican los archivos en el disco?

Probablemente también hay muchas otras causas que no figuran en la lista anterior.

Si está seguro de que las dependencias de orden son imposibles en su base de código, eso deja un problema con estas pruebas en particular.

Es difícil adivinar qué podría ser esto sin un código. ¿Puedes publicar una versión simplificada de la prueba que todavía falla?