Acabo de escribir un código de muestra simple para asegurarme de que tenía EclEmma instalado correctamente. No obtengo una cobertura del 100%, y no entiendo por qué. El resaltado implica que tiene que ver con el nombre de la clase. Aquí está mi código, con las correspondientes pruebas JUnit, la forma EclEmma destacó que:¿Puede el código completamente cubierto tener una calificación de cobertura EclEmma de menos del 100%?
Los resultados de cobertura muestran que tres instrucciones en Arithmetic
no están obteniendo éxito, a pesar de que ambos métodos actuales parecen para ser completamente cubierto:
he leído the EclEmma documentation about basic block coverage, pero estoy sigo confundido. No estoy seguro de qué bloques básicos se están perdiendo. Al principio, pensé que EclEmma podría estar ignorando el bytecode para las clases, pero ArithmeticTest
parece manejarse bien.
He dos cuestiones relacionadas entre sí:
- ¿Esto indica un problema con la forma en que he instalado/configurado EclEmma?
- ¿Es normal/aceptable que el código totalmente cubierto tenga una clasificación de cobertura EMMA alta pero no del 100%? De ser así, ¿cómo funciona?
En realidad, tiene un "bloque de texto", simplemente está vacío. En bytecode, el constructor predeterminado está allí, en la línea marcada en rojo por EclEmma. Para cubrirlo y hacer que aparezca en verde, una prueba solo necesita llamar al constructor: 'new Arithmetic()'. Por supuesto, lo correcto aquí sería declarar un constructor predeterminado 'privado' en la clase. –