2012-12-18 14 views

risposta

2

Solo nel caso si è dimenticato di fare queste:

  1. State annotare i test utilizzando @Test?
  2. Stai eseguendo la classe come un caso di test JUnit o dal pulsante di copertura?

Non sono sicuro quale sia la causa del problema, perché ha sempre funzionato per me. L'hai installato da Eclipse stesso? Prova a disinstallarlo e reinstallalo da eclipse. Ecco come farlo solo nel caso in cui:

  1. In Eclipse, fare clic su "Guida"> "Installare il nuovo software"
  2. Fare clic su "Aggiungi", e digitare quanto segue:
  3. Select EclEmma, ​​ed installare
+0

Yeap, utilizzando @ Test. Correre dal pulsante di copertura. I test funzionano bene, ma la copertura mostra sempre lo 0%, tutti i percorsi rossi. – renanlf

+0

Ho aggiornato la risposta, controlla che sia d'aiuto. – Steve

+0

No ... ancora lo stesso = /. Lo usi su un progetto maven? Perché il problema sembra accadere solo sui progetti di Maven, qui – renanlf

5

Secondo il sito ufficiale, Eclemma è un plug-in di copertura del codice per Eclipse, basato sulla libreria JaCoCo.

Come si desidera utilizzare lo stesso motore di copertura del codice di fuori di Eclipse, è necessario includere il plugin Jacoco all'interno della configurazione di Maven (POM) del progetto, come il seguente (this code was copied from the Agile Engineering blog):

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.jacoco</groupId> 
      <artifactId>jacoco-maven-plugin</artifactId> 
      <version>0.6.0.201210061924</version> 
      <executions> 
       <execution> 
        <id>jacoco-initialize</id> 
        <goals> 
         <goal>prepare-agent</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>jacoco-site</id> 
        <phase>test</phase> 
        <goals> 
         <goal>report</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

Per eseguire i test basta digitare il seguente sullo strumento da riga di comando:

mvn clean test 

ps: si potrebbe anche utilizzare altri plugin di copertura del codice, come Cobertura o Emma.

+0

Non è stato possibile inserire i collegamenti ipertestuali per [Eclemma] (http://www.eclemma.org/) e per i siti Web [di Emma] (http://emma.sourceforge.net/maven-emma-plugin/) sul post qui sopra. –

+0

Ho anche avuto lo stesso problema, ho avuto un progetto GWT e non un esperto ..., come ha detto Renanlf sempre ricevendo una copertura dello 0% per tutto. – Dipak

2

Ora ho capito che si desidera solo per ottenere un rapporto con lo strumento all'interno di Eclipse ...

Come è il copertura del codice nella finestra di dialogo di Eclipse? Hai provato a utilizzare mouse right click on this dialog to export session (report) o all'interno di File -> Export?

+0

Sì, questo è solo per esportare un'esecuzione della copertura, il report esportato continua con copertura 0% =/ – renanlf

+0

Quindi, ho due suggerimenti: 1. Prova a reinstallare il plugin Eclemma (se hai usato il sito di aggiornamento per installare l'ultima volta, prova ad installarlo dal marketplace ora); 2.Se il precedente non ha funzionato, prova ad usare la libreria JaCoCo direttamente da Maven (come ho spiegato nell'altro post) per isolare il problema, assicurandoti che il problema riguardi solo il livello sopra Jacoco (plugin di eclipse) e non da questo motore. –

2

È un problema noto per molti anni e purtroppo non esiste ancora una soluzione ufficiale per questo.

Lo si può vedere here, here e here

Un non-così-miele soluzione potrebbe essere quella di provare a utilizzare eCobertura (o declassamento eclemma da 2.x a 1.x)

-1

sto usando eclemma 2.3.2 e che sta funzionando perfettamente su Eclipse

ho solo bisogno di aggiungere queste dipendenze nel mio pom.xml

<dependency> 
    <groupId>org.jboss.arquillian.extension</groupId> 
    <artifactId>arquillian-jacoco</artifactId> 
    <version>1.0.0.Alpha6</version> 
    <scope>test</scope> 
</dependency> 
<dependency> 
    <groupId>org.jacoco</groupId> 
    <artifactId>org.jacoco.core</artifactId> 
    <version>0.7.1.201405082137</version> 
    <scope>test</scope> 
</dependency> 

Poi ho costruire il progetto, aggiornamento progetti maven configurano ed eseguono il plugin di copertura come previsto

0

Mi sono appena imbattuto in questo problema ed è stato causato da un classpath configurato in modo errato. Quando sono stati eseguiti i test unitari, sono stati eseguiti contro un jar compilato (la sorgente effettiva compilata al di fuori di eclipse) e non il mio vero codice sorgente. Dopo aver rimosso il jar dal mio classpath, l'unit test ha colpito correttamente la sorgente del pacchetto.

0

Se si utilizza eclemma, è necessario aggiungere la dipendenza jacoco. se jacoco è stato aggiunto e ancora, si trovano ad affrontare questo problema, consultare il eclemma faq: "Why does a class show as not covered although it has been executed?"

si dice,

Prima rendere i dati sicuri di esecuzione sono stati raccolti. Per questo seleziona il link Sessioni nell'angolo in alto a destra del report HTML e controlla se la classe in questione è elencata. Se è elencato ma non collegato, la classe al momento dell'esecuzione è un file di classe diverso. Assicurati di utilizzare lo stesso file di classe in fase di esecuzione come per la generazione di report. Si noti che alcuni strumenti (ad esempio contenitori EJB, strutture di simulazione) potrebbero modificare i file di classe in fase di esecuzione.

Quindi, Mockito/PowerMockito può causare questo problema. potresti aver istanziato la classe che vuoi testare e aver eseguito PowerMockito.spy() su quell'oggetto. Ti verrà mostrato che il test case è stato eseguito bene senza errori, ma Jacoco non migliorerà la copertura del codice nel suo rapporto.

non si dovrebbe mettere la classe che si sta testando nell'annotazione @PrepareForTest(). controlla se lo hai aggiunto e rimuovilo dall'annotazione.

0

Sono stato in grado di risolvere il problema sul mio chiamando un'istanza della classe nella parte superiore dei casi di test. cioè

public hotelOccupancy hotel = new hotelOccupancy(); 

@Test 
public void testName() { 
    // some test here 
} 

Una volta che ho fatto tutta la mia copertura ha iniziato a lavorare ed i problemi sono stati risolti.

Problemi correlati