Sto utilizzando EclEmma per l'analisi della copertura.Perché EclEmma non è sincronizzato (MyClass.class)?
Il mio codice Java include un blocco sincronizzato (MyClass.class) {}.
EclEmma dice che è solo parzialmente coperto, evento anche se ho un test unitario in cui un thread accede e un altro thread è bloccato.
È possibile ottenere una copertura completa sincronizzata utilizzando EclEmma?
Posso annotare il codice in qualche modo per dire a EclEmma di fornire a questa linea una copertura completa?
Cordiali saluti Roger
Sembra che tu abbia ragione. Ho provato questo: Object synch = MyClass.class; sincronizzato (synch) {} ma non è stato d'aiuto, anche se il mio test ha un thread in attesa e un altro thread che riceve il mutex. –
Nella mia esperienza, 'sincronizzato' si accenderà in verde se il blocco sincronizzato contiene codice che attende su un monitor oggetto e un test interrompe il thread in attesa. Non mi sono mai preso la briga di scavare nella strumentazione EMMA per scoprire se questo è vero nel caso generale, comunque. –
Dopo una piccola sperimentazione, sono stato in grado di ottenere una copertura completa della linea 'sincronizzata' se il blocco sincronizzato completato normalmente * e * completato bruscamente a causa di un'eccezione. –