Me encontré con el mismo problema, por lo que invertí un poco de tiempo para realizar una ingeniería inversa de la respuesta, donándola a Stack Overflow.
Para cada -statement Java assert
, Cobertura comprueba dos condiciones:
- El que una sentencia assert dada fue ejecutado con la afirmación comprobación activada o desactivada.
- Si el predicado realmente se evalúa como verdadero o falso.
Por lo tanto, son posibles un total de cuatro resultados. La información proporcionada para una línea dada en un informe HTML consiste en
- el resultado de la condición 1 (0-2 posibilidades sacados de 2 referente a la ejecución con la comprobación activado o desactivado),
- y el resultado para la condición 2 (0-2 posibilidades sacadas de 2: aserción pase o falle).
- el resultado global (0-4 de 4),
escenario típico son:
Ejecución de Cobertura una vez, con la comprobación de la afirmación discapacitados. Obtendrá:
habilitado/deshabilitado: 50% (deshabilitado); Aprobado/Fallido: 0% (no alcanzado); Por lo tanto, en general el 25%.
Cobertura informará esto como
Conditional coverage 25% (1/4) [each condition 50%, 0%]
Ejecución de Cobertura una vez, con la afirmación de comprobar permitido. Normalmente sus afirmaciones son siempre ciertas, por lo tanto obtiene:
Habilitado/Deshabilitado: 50% (habilitado); Aprobado/Fallido: 50% (siempre verdadero); Por lo tanto, en general: 50%.
Corriendo Cobertura dos veces, una vez con la verificación de afirmación habilitada, y una vez sin. Suponiendo que las aserciones son siempre verdaderas, obtenemos:
Habilitado/Deshabilitado: 100% (habilitado y deshabilitado); Aprobado/Fallido: 50% (siempre verdadero); Por lo tanto, en general el 75%.
Entonces, si sumamos los casos de prueba que aseguran que una afirmación dada falla al menos una vez, y pasa al menos una vez, obtenemos todos los números en el 100%.
Nótese, sin embargo, que si se utiliza afirmaciones en el estilo de diseño por contrato, por lo general, ni siquiera será capaz de hacer fracasar, ver la respuesta a otra pregunta Pila de desbordamiento, Cobertura coverage and the assert keyword.
Finalmente: aunque estos números son explicables, no estoy seguro de que sean muy útiles. Mi preferencia sería poder omitir la cobertura relacionada con la afirmación de los informes generales. Clover puede hacer esto, pero no conozco una herramienta de análisis de cobertura de fuente abierta con esta bonita función.
¿Podría publicar la configuración POM relevante (para ejecutar las pruebas JUnit dos veces)? –