2013-06-27 18 views
6

È possibile che io stia perdendo la testa, ma stamattina, quando ho eseguito l'aggiornamento a Eclipse Kepler, ho provato a eseguire i test unitari per più progetti Eclipse contemporaneamente e non sono riuscito. Ho selezionato più progetti, ho aperto il menu di scelta rapida e le opzioni "Esegui come ..." erano sparite.Esecuzione di test JUnit da più progetti in Eclipse

"Dannazione Keplero!" Ho pensato e acceso la mia vecchia installazione di Juno per convincermi che il comportamento era cambiato. Tuttavia, non ha funzionato neanche lì.

Ora sto mettendo in dubbio la mia sanità mentale sul fatto che sia mai stato possibile. Manyother Le domande Stack Overflow e altre sites suggeriscono che si tratta di un compito difficile, se non impossibile. Tuttavia, sono così sicuro che stavo facendo questo nel recente passato che mi ha lasciato un po 'scosso.

Quindi ... questo è stato possibile, sia a Keplero che a Juno? Qualcuno può suggerire un plug-in popolare che potrebbe aver abilitato quella funzione (che ho erroneamente assunto come comportamento predefinito)?

Contesto: ho un progetto Maven multi-modulo gestito attraverso m2e e mi aspettavo di poter selezionare diversi progetti ed eseguire tutti i test di unità.

+0

Avete ancora configurazioni di esecuzione disponibili? Se è così, basta creare una configurazione ed eseguirla. – JREN

+0

@JREN Spiacenti, sì, l'opzione "Esegui configurazioni ..." è ancora lì. Ma se seguo questa strada, posso solo eseguire i test per un progetto, non per più progetti. –

+0

Dovrebbe essere disponibile un pulsante di opzione che dice "Esegui tutti i test nel progetto, nel pacchetto o nella cartella di origine selezionati:" Se hai selezionato 2 progetti, dovrebbe eseguire tutti i test unitari per entrambi. Almeno funziona per me: - /. Sto usando Eclipse Juno – JREN

risposta

1

Non è possibile eseguire i test per più progetti in Eclipse, almeno utilizzando i normali corridori. Ci sono, tuttavia una serie di opzioni:

  1. Creare uno script/esperto di formica che corre tutto
  2. Se si desidera eseguire i test ogni volta che si salva, è possibile utilizzare Infinitest.

Dal sito di Infinitest:

Infinitest è un plugin per Eclipse continua sperimentazione e IntelliJ. Ogni volta che viene apportata una modifica al codice sorgente, Infinitest esegue tutti i test che potrebbero non riuscire a causa di queste modifiche.

Infinitest può potenzialmente eseguire tutti i test in tutti i progetti.

5

È possibile eseguire test JUnit su più progetti utilizzando Classpath Suite. In generale tutto quello che dovete fare è:

  1. creare un progetto di Eclipse a seconda tutti i progetti che si desidera testare.
  2. Scrivi una suite:

    @RunWith (ClasspathSuite.class)
    public class MySuite

Date un'occhiata a questo articolo: Roger Rabbit - JUnit Tests Runner Across Multiple Projects, include un passo per passo ed un esempio codice di esempio.

1

Se, invece di utilizzare il menu di scelta rapida, utilizzare la scorciatoia da tastiera (default = Alt-Shift-XT), si otterrà la seguente finestra:

enter image description here

Questo è un suggerimento sul perché Eclipse non mostra l'opzione nel menu - pensa che non ci siano test. Questo è chiaramente sbagliato.

Scavando attraverso i Eclipse source code for JUnitLaunchShortcut (linee 160-191), ho trovato questo:

private void launch(Object[] elements, String mode) { 
    try { 
     IJavaElement elementToLaunch= null; 

     if (elements.length == 1) { 
... 
     } 
     if (elementToLaunch == null) { 
      showNoTestsFoundDialog(); 
      return; 
     } 

Funziona solo se si seleziona esattamente una classe di prova.

La visibilità opzione di menu viene controllato dalla configurazione org.eclipse.jdt.junit plug (plugin.xml), e che ha lo stesso problema (linee 221-234):

<contextualLaunch> 
    <enablement> 
     <with variable="selection"> 
      <count value="1"/> 
      <iterate> 
       <adapt type="org.eclipse.jdt.core.IJavaElement"> 
        <test property="org.eclipse.jdt.core.isInJavaProject"/> 
        <test property="org.eclipse.jdt.core.hasTypeOnClasspath" value="junit.framework.Test"/> 
        <test property="org.eclipse.jdt.junit.canLaunchAsJUnit" forcePluginActivation="true"/> 
       </adapt> 
      </iterate> 
     </with> 
    </enablement> 
</contextualLaunch> 

Il <count value="1"/> bit negli atti iniziano come un selettore, e significa la stessa cosa: devi avere esattamente una voce selezionata, altrimenti la voce di menu non verrà visualizzata.

Penso che abbiamo trovato il problema :)

Inoltre ho controllato la cronologia file sia in questi, e che non sono stati modificati dal settembre 2006. Quindi, se sei riuscito a fare questo con una versione più recente molto probabilmente hai installato un qualche tipo di plugin che ti permette di farlo.

Problemi correlati