Ich benutze EclEmma für Coverage-Analyse.Warum deckt EclEmma nicht syncronisiert (MyClass.class)?
Mein Java-Code enthält einen synchronisierten (MyClass.class) {} -Block.
EclEmma sagt, es ist nur teilweise abgedeckt, obwohl ich einen Komponententest habe, in dem ein Thread Zugriff erhält und ein anderer Thread blockiert ist.
Ist es möglich, mit EclEmma synchronisiert zu werden?
Kann ich den Code in irgendeiner Weise annotieren, um EclEmma mitzuteilen, dass diese Zeile die volle Abdeckung bietet?
Mit freundlichen Grüßen Roger
Es scheint, als ob Sie Recht haben. Ich habe das versucht: Object synch = MyClass.class; synchronisiert (synch) {}, aber es hat nicht geholfen, obwohl mein Test einen Thread wartet und ein anderer Thread den Mutex bekommt. –
Meiner Erfahrung nach leuchtet 'synchronized' auf grün, wenn der synchronisierte Block Code enthält, der auf einem Objektmonitor wartet, und ein Test unterbricht den wartenden Thread. Ich habe mir nie die Mühe gemacht, mich in die EMMA-Instrumentierung zu vertiefen, um herauszufinden, ob das im allgemeinen Fall zutrifft. –
Nach ein wenig Experimentieren konnte ich eine vollständige Abdeckung der "synchronisierten" Zeile erreichen, wenn der synchronisierte Block aufgrund einer Ausnahme abrupt * und * abrupt beendet wurde. –