2010-05-30 12 views
6

tengo una clase que comienza con:eclEmma - cobertura de código completo en el encabezado de clase?

public class GeneralID implements WritableComparable<GeneralID>{ 
... 
} 

y otro que es:

public class LineValuesMapper<KI, VI, KO, VO> extends Mapper<LongWritable, Text, Text, IntWritable>{ 
... 
} 

Todos los métodos en estas clases están cubiertos. Pero no su encabezado. El encabezado de ambas clases se pinta de amarillo con EclEmma.

Las instrucciones cubiertos para estas clases son:

Element Coverage Covered Instructions Total Instructions 
LineValuesMapper.java 97.3 % 145 149 
GeneralID.java 99.3 % 566 570 

¿Hay algo que pueda hacer para cubrir la totalidad de la cabecera de la clase?

+0

EclEmma también debe darle los números de cobertura en los pequeños paneles debajo del editor. ¿Qué dicen esos? ¿Puedes publicar los números (bloques, líneas, instrucciones, etc.) para tu clase de muestra? – jasonmp85

+0

Además, ambas clases implementan o amplían tipos parametrizados. ¿Este comportamiento se exhibe en clases que no usan genéricos en sus definiciones? – jasonmp85

+0

Esto solo ocurre en estas dos clases que extienden/implementan tipos parametrizados. Tengo otras clases en la misma situación que están completamente cubiertas. La diferencia es que las otras clases de tipos parametrizados están definidas por mí. Estos tipos están definidos en la API de Hadoop. He agregado las instrucciones cubiertas en mi pregunta, arriba. –

Respuesta

3

Para las clases que amplían superclases genéricas o implementan interfaces genéricas, el compilador puede agregar métodos de puente sintético. Ver the results of looking at the bytecode de un caso similar.

Quizás en sus clases, estos métodos de puente no sean llamados. OTOH, acabo de leer que Emma tiene una opción para ignorar los métodos sintéticos o puente que está habilitado por defecto.

+0

Estaba agitando mi cerebro para esta respuesta antes. Buena atrapada. Emma puede tener esta opción, pero no recuerdo si EclEmma la usa cuando está impulsando a Emma desde dentro de Eclipse. – jasonmp85

+2

En esta línea, aparentemente, Enums también tiene algunos problemas con Emma (http://padcom13.blogspot.com/2009/12/code-coverage-and-enum-types.html). Tal vez Fork puede encontrar una solución similar? – jasonmp85

+0

¿Dónde lo desactivo? Una cosa que noté en las dos clases que mencioné anteriormente es una enumeración que he definido en otro lugar. Estoy tratando de probar la enumeración, pero no tuve suerte. –

Cuestiones relacionadas