Ho appena scritto un semplice codice di esempio per assicurarmi di avere EclEmma installato correttamente. Non ricevo copertura al 100% e non capisco perché. L'evidenziazione implica che abbia a che fare con il nome della classe. Ecco il mio codice, con corrispondenti test JUnit, il modo in cui EclEmma evidenziato che:Un codice coperto può avere un indice di copertura EclEmma inferiore al 100%?
I risultati di copertura mostrano che tre istruzioni in Arithmetic
non sono sempre successo, anche se entrambi i metodi attuali sembrano per essere completamente coperto:
ho letto the EclEmma documentation about basic block coverage, ma sono ancora confuso. Non sono sicuro di quali blocchi di base vengano ignorati. All'inizio pensavo che EclEmma potesse semplicemente ignorare il bytecode per le classi, ma il ArithmeticTest
sembra essere gestito bene.
Ho due domande strettamente correlati:
- Questo indica un problema con il modo in cui ho installato/configurato EclEmma?
- È normale/accettabile che un codice completamente coperto abbia un livello di copertura EMMA alto ma non del 100% e, in caso affermativo, come funziona?
In realtà, ha un "blocco di testo", è solo vuoto. In bytecode, il costruttore predefinito è lì, sulla linea segnata in rosso da Eclemma. Per coprirlo e farlo apparire in verde, un test deve solo chiamare il costruttore: 'new Arithmetic()'. Ovviamente, la cosa corretta qui sarebbe dichiarare un costruttore predefinito 'private' nella classe. –