Esecuzione di un singolo test JUnit in Eclipse


85

Se ho una suite di test con più test, quando provo a eseguire un singolo test unitario, dal menu contestuale dell'editor di codice o dalla vista JUnit, sembra insistere per eseguire sempre l'intera suite, piuttosto che il prova singola. C'è un modo per disabilitare per modificare questo comportamento in modo che io possa chiedere di eseguire quello, e solo quello, test.


11
Sarebbe bello se scegliessi la risposta migliore spuntando il segno verde accanto alla risposta.
guerda

Risposte:


96

Nell'esploratore di pacchetti, spiega la classe. Dovrebbe mostrarti tutti i metodi. Fare clic con il tasto destro del mouse sull'unico metodo che si desidera eseguire, quindi selezionare Esegui come -> JUnit dal menu contestuale (appena testato con Eclipse 3.4.1). Anche la selezione di "Esegui" su una singola voce nella visualizzazione dei risultati di JUnit per rieseguire un test funziona allo stesso modo.


3
Sfortunatamente, questo funziona solo per i metodi di test che sono implementati direttamente in quella classe. Non funziona per i metodi @Test ereditati.
Christopher Barber

1
Nota che sembra che devi fare clic sul nome del metodo. Facendo clic all'interno del metodo verrà eseguita l'intera classe. (O almeno è così che si sta comportando per me.)
emragins il

Sembra funzionare solo da questo particolare "esploratore di pacchetti" che è più che sconsiderato quando si tratta di trovare rapidamente un metodo da testare. E anche di questo, il debugger sembra saltare gli altri metodi, il che richiede tempo extra. Ci deve essere un modo migliore ...
Macilias

ed è anche fragile ... ora eclipse ha deciso di non saltare altri test quando si esegue in questo modo :(
Macilias

27

Il modo più veloce che conosco:

  1. Premere Ctrl+ Shift+ (sposta il cursore sulla dichiarazione del metodo corrente),
  2. premere Alt+ Shift+ x(o dper il debug) quindi premere t(tasto di scelta rapida per "Esegui test JUnit" ),
  3. controllare il risultato del test,
  4. premi Alt+ per tornare alla riga di codice che eri prima.

Se desideri eseguire tutti i test, puoi saltare i passaggi 1 e 4.


13

In Eclipse 3.5, puoi aggirare questo problema cambiando il test runner in JUnit 3. Funzionerà solo per i test JUnit 3, non per i test JUnit 4. Puoi cambiare il test runner procedendo come segue:

  1. Fare clic con il tasto destro su uno dei metodi di test in Esplora struttura
  2. Seleziona Esegui come -> Esegui configurazioni
  3. Nella scheda "Test", seleziona "Esegui un singolo test"
  4. Nel menu a discesa Test Runner, seleziona "JUnit 3"

Potrebbe funzionare anche in altre versioni.


Ottima scelta! Cambiare "Test Runner" in "JUnit 3" nella finestra di dialogo delle configurazioni di esecuzione ha funzionato per me in Eclipse 3.6.0 (Helios). Ora posso eseguire un singolo metodo in un test JUnit. FWIW, non ho mai avuto problemi a eseguire singole classi di test JUnit 3 o 4 .
Adam Monsen

Perfetto, questo ha funzionato anche per me. La risposta di cui sopra non ha fatto anche se sembra avere più voti positivi.
dreza

12

Ciò è possibile in Eclipse Indigo con JUnit 4.8.2. Fai clic con il pulsante destro del mouse sul metodo che desideri sottoporre a test unitario individualmente nel Outlineriquadro e seleziona Run As -> JUnit Test.

È anche possibile fare clic selettivamente con il pulsante destro del mouse sul nome di un metodo di test nell'editor di origine e selezionare Run As -> Junit Test.


1
sembra testare quello specifico caso di test. Tuttavia, dopo ciò, continua ancora con altri casi di test.
lwpro2

@ lwpro2 Devi usare JUnit 4 (annotazioni) per testare un singolo caso di test. JUnit 3 (estendere TestCase) eseguirà comunque tutti i test correlati.
AnthonyW

1
wulfgar.pro Stavo facendo sapere a @ lwpro2 che se stai eseguendo il tuo test JUnit con un corridore JUnit 4 (perché, ad esempio, stai usando JUnit 4.8.2) ANCORA il tuo test estende ancora TestCase, non sarai in grado di eseguire un singolo prova da solo. È necessario utilizzare un corridore JUnit 3 o convertire il test utilizzando le annotazioni.
AnthonyW

grazie per i commenti. Tuttavia, stavo usando Junit4, con SpringJunit4ClassRunner. Comunque, non è un grosso problema. commentare l'annotazione è veloce.
lwpro2

questa risposta è più semplice
Jackson Tale

9

Non usare Strg+ F11ma il tasto di scelta rapida Alt+ Shift+ X-> T.
Quindi Eclipse eseguirà il file aperto corrente come test JUnit. Il pulsante di riproduzione verde eseguirà solo l'ultima configurazione di esecuzione scelta.

Per me funziona bene con Alt+ Shift+ X-> T.


Grazie. Ma supponiamo che stai lavorando su una classe che viene testata da uno unit test. Mentre modifichi la classe, come esegui il suo UnitTest corrispondente senza cambiare la finestra al file UnitTest?
bibstha

@bibstha Puoi usare Ctrl + 3 e poi digitare "rerun". Ciò consente di rieseguire l'ultimo caso di test JUnit. In Finestra-> Preferenze-> Generale-> Tasti, puoi assegnare una scorciatoia personalizzata per questa azione. Ctrl + Maiusc + F11 sarebbe adatto, secondo me.
guerda

9

Aggiungerò agli altri includendo una tastiera altamente produttiva che consente di eseguire il debug di un singolo test unitario (metodo).

Spostare il cursore sul nome del metodo utilizzando uno dei due

  • Ctrl+ Shift+ Upo
  • Ctrl+ Shift+ Downo
  • Ctrl+ oquindi digita il nome del metodo

Una volta che il cursore si trova sul nome del metodo (o subito prima):

  • Alt+ Shift+ D-> T(Debug)
  • Alt+ Shift+ X-> T(Esegui)

Dopo aver eseguito il test puoi tornare al punto in cui si trovava il cursore facendo:

Alt+Back

Ottieni quasi un comportamento simile a REPL da:

Ctrl+ Shift+ Upe Alt+ Shift+ X-> Te Alt+Back

Puoi anche impostare rapidamente un punto di interruzione:

Ctrl+ Shift+B


3

Fare clic con il pulsante destro del mouse da qualche parte sul nome del metodo di prova nel file e selezionare "Esegui" -> "Junit Test". Lo faccio sempre con Kepler e JUnit 4.


2

Ho avuto lo stesso problema che altri hanno avuto usando Eclipse 3.4.1 e JUnit 4 test runner: non è stato possibile eseguire un singolo test. Ma ho trovato un suggerimento da qualche altra parte che ha risolto il problema. La mia classe di test stava ancora estendendo junit.framework.TestCase. Quando ho smesso di estendere TestCase, tutto ha funzionato bene e sono stato in grado di eseguire singoli test JUnit con il test runner JUnit 4. Ovviamente, avevo bisogno di JUnit 4 che le annotazioni usassero importazioni statiche per i metodi di asserzione, ma l'avevo già fatto - semplicemente non avevo rimosso l'eredità TestCase.


1

Se si dispone di molti test in più di un file e si desidera eseguire solo i test in un determinato file, è possibile fare clic con il pulsante destro del mouse su quel file e selezionare Esegui come -> test junit. Ora, se vuoi eseguire un solo test, contenuto in un file con molti test, la mia ipotesi è (non ho eclipse installato qui) che la vista Struttura elencherà tutti i metodi di test per un file, e probabilmente sarai in grado di farlo fare clic con il pulsante destro del mouse su un singolo metodo di test ed eseguirlo come un test JUNit.

Spero che sia d'aiuto.


1

Per eseguire un solo metodo di prova.
In (Esplora pacchetti o Esplora progetti) dispiega la classe. Dovrebbe mostrarti tutti i metodi. Fare clic con il tasto destro del mouse sull'unico metodo che si desidera eseguire, quindi selezionare Esegui come -> JUnit dal menu di scelta rapida.
inserisci qui la descrizione dell'immagine


0

Per me, inoltre, non funziona in Eclipse 3.4.2, sebbene abbia funzionato nelle versioni precedenti (ho provato a eseguire un metodo singolo da Esplora pacchetti e un test junit singolo dalla vista junit)


L'esecuzione di un singolo metodo / test da Package Explorer funziona bene per me in Eclipse 3.4.2.
Volker Stolz

0

Sono d'accordo con il punto su 3.4.2 che non funziona più come nelle versioni precedenti. Prima di poter fare clic con il pulsante destro del mouse su un singolo test in un gruppo di test dalla vista JUnit ed eseguire solo quel test. Nell'ultima versione si insiste per eseguirli sempre tutti. Certo, la vista esegue il test su cui hai fatto clic per primo e scarica il resto in un rollup chiamato "Test non radicati". Se qualcuno lo capisce, mi piacerebbe sapere come aggirarlo.


0

Leggendo alcuni dei commenti qui, sembra che potresti essere interessato a eseguire i test per il codice che modifichi mentre lo modifichi, senza perdere il focus sul codice su cui stai lavorando. C'è un plugin eclipse per fare proprio questo. Vedi infinitest .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.