Estoy usando EclEmma para el análisis de cobertura.¿Por qué EclEmma no cubre syncronized (MyClass.class)?
Mi código Java incluye un bloque sincronizado (MyClass.class) {}.
EclEmma dice que está parcialmente cubierto, aunque tengo una prueba de unidad en la que un hilo tiene acceso y otro hilo está bloqueado.
¿Es posible obtener una cobertura completa de sincronización utilizando EclEmma?
¿Puedo anotar el código de alguna manera para decirle a EclEmma que proporcione a esta línea una cobertura completa?
Saludos cordiales Roger
Parece que tienes razón. Intenté esto: Object synch = MyClass.class; synchronized (synch) {} pero no sirvió de nada, aunque mi prueba tiene un hilo en espera y otro hilo que obtiene el mutex. –
En mi experiencia, 'synchronized' se iluminará en verde si el bloque sincronizado contiene código que espera en un monitor de objetos, y una prueba interrumpe el hilo de espera. Sin embargo, nunca me molesté en profundizar en la instrumentación EMMA para saber si esto es cierto en el caso general. –
Después de un poco de experimentación, pude lograr una cobertura completa de la línea 'sincronizada' si el bloque sincronizado completado normalmente * y * se completó abruptamente debido a una excepción. –