Puedo usar la Cobertura plugin de Maven para uno de mis proyectos. Pero tengo una pregunta sobre el informe generado:

¿Cuál es la diferencia entre la línea y la rama de cobertura?

InformationsquelleAutor Gillespie59 | 2011-11-22

3 Comentarios

  1. 139

    Cobertura de la línea de las medidas de cuántas declaraciones que tuvo (una instrucción es generalmente una línea de código, no incluyendo comentarios, condicionales, etc). Rama de coberturas de cheques, si usted tomó la verdadera y la falsa rama para cada una de las condicionales (if, while, for). Usted tendrá dos veces la cantidad de ramas 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 para true, se obtiene 100% declaración de cobertura. Suena bien? NOPE, no va a ser un puntero nulo si se llama con false. Sin embargo, tienes un 50% de la rama de la cobertura en el primer caso, así que usted puede ver que hay algo que falta en su prueba (y, a menudo, en el código).

    • Gran respuesta! Se muestra cuando la cobertura de la línea le da la falsa sensación de tener un buen código!
  2. 56

    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 el else rama tiene:

    • 4 fuera de 5 líneas cubierto
    • 1 de 2 ramas cubiertas

    También Cobertura informe sí introduce algunas agradable de ayuda emergente información sobre herramientas cuando el encabezado de la columna se hace clic en:

    Cobertura de la línea – El porcentaje de líneas ejecutadas por esta prueba.

    Rama de Cobertura – El porcentaje de ramas ejecutado por esto la ejecución de la prueba.

    • Esta es también una excelente respuesta! Simple y claro!
  3. 2
    if(cond){
        //branch 1
    }else{  
        //branch 2
    }

    Debe atender a todas las líneas de la rama 1 y la sección 2 para obtener una cobertura del 100% para ambos LineCoverage y BranchCoverage.

    Si en todo te pierdas nada de los demás, usted recibirá la mitad de la rama de la cobertura.
    Si usted ha perdido nada en el # de líneas en ambos por si y otra cosa, usted va a obtener BranchCoverage de 100%, pero no al 100% con cobertura de la línea.

    Espero que esto ayude.

Dejar respuesta

Please enter your comment!
Please enter your name here