que utilizan el plugin Maven Cobertura para uno de mi proyecto. Pero tengo una pregunta sobre el informe generado:Las diferencias entre la línea y la cobertura de la rama
¿Cuál es la diferencia entre la línea y cobertura de sucursales?
que utilizan el plugin Maven Cobertura para uno de mi proyecto. Pero tengo una pregunta sobre el informe generado:Las diferencias entre la línea y la cobertura de la rama
¿Cuál es la diferencia entre la línea y cobertura de sucursales?
La cobertura de línea mide la cantidad de declaraciones que tomó (una instrucción es generalmente una línea de código, sin incluir comentarios, condicionales, etc.). Coberturas de sucursal comprueba si tomó la rama verdadera y falsa para cada condicional (si, mientras, para). Tendrás el doble de ramas que condicionales.
¿Por qué te importa? Considere el ejemplo:
public int getNameLength(boolean isCoolUser) {
User user = null;
if (isCoolUser) {
user = new John();
}
return user.getName().length();
}
Si se llama a este método con isCoolUser
conjunto de true
, se obtiene la cobertura de declaración de 100%. ¿Suena bien? NOPE, habrá un puntero nulo si llama con false
. Sin embargo, tiene un 50% de cobertura de sucursal en el primer caso, por lo que puede ver que falta algo en su prueba (y, a menudo, en su código).
Tome este código como un ejemplo simplificado:
if(cond) {
line1();
line2();
line3();
line4();
} else {
line5();
}
Si su prueba sólo ejerce la cond
ser fiel y nunca se ejecuta la rama else
tiene:
También en sí Cobertura report introduce algunas buenas sobre herramientas de ayuda emergente cuando se hace clic en encabezado de la columna:
de cobertura de línea - El porcentaje de líneas ejecutadas por esta prueba.
Sucursal Cobertura - El porcentaje de sucursales ejecutadas por esta ejecución de prueba.
¡Esta es también una excelente respuesta! Simple y claro! – Bowen
if(cond){
//branch 1
}else{
//branch 2
}
Es necesario para hacer frente a todas las líneas es la rama y la rama 1 2 para obtener una cobertura del 100% tanto para LineCoverage y BranchCoverage.
Si nada se pierda nada de lo demás, obtendrá la mitad de la cobertura de sucursales. Si ha omitido algo en # líneas tanto en if como en otra opción, obtendrá BranchCoverage del 100% pero no del 100% con cobertura de línea.
Espero que esto ayude.
¡Gran respuesta! ¡Muestra cuando la cobertura de línea da la falsa sensación de tener un buen código! – MAGx2