Esegui unit test in IntelliJ IDEA da più moduli insieme


89

Come posso eseguire tutti i test da due o più moduli IDEA contemporaneamente?

Sto usando molti moduli ed è importante eseguire spesso tutti gli unit test e quando scelgo più di una cartella da eseguire, non c'è più l'opzione "Esegui" nel menu contestuale.

Risposte:


115

Modo migliore: (modifica dopo 3 anni)

C'è anche un modo migliore per raggiungere questo obiettivo.

  1. Selezionare il menu "Esegui" → "Modifica configurazioni ...". Fare clic sul segno più verde nell'angolo in alto a sinistra e selezionare JUnit.

  2. Seleziona "Test kind" su "Pattern" e inserisci questa espressione regolare esattamente come la vedi: ^(?!.*IT$).*$(inizia con un accento circonflesso ^e termina con dollaro $). Questa regexp dice: tutti i test che non terminano con IT nel loro nome .

  3. Seleziona "Cerca test" su "In tutto il progetto". La directory di lavoro dovrebbe essere impostata sulla directory di lavoro del modulo superiore (dovrebbe essere impostata di default).

  4. Immettere un nome per il test come "Tutti i test unitari". Preferisco anche contrassegnare l'opzione "Condividi" in modo che questa configurazione non scompaia in seguito. Fare clic su Applica e OK.

Puoi sperimentare con questa regexp per soddisfare le tue esigenze.

Risposta originale:

È fattibile, anche se non è comodo.

  1. Seleziona il primo modulo, fai clic con il pulsante destro del mouse sulla test/javadirectory e "Esegui tutti i test". Crea la configurazione di prova.
  2. Seleziona "Modifica configurazioni" e seleziona "Condividi" sulla configurazione appena creata in modo che venga salvata.
  3. Seleziona il secondo modulo, "Esegui tutti i test" su di esso e seleziona "Condividi" anche su questa configurazione.
  4. Nella sezione "Prima del lancio", fai clic su "+" e seleziona "Esegui un'altra configurazione", quindi seleziona la configurazione del primo modulo.

In questo modo esegui le configurazioni in sequenza e ogni configurazione ottiene una nuova scheda. Comunque, meglio di niente.


Grazie! Di gran lunga il modo più pulito.
Mi chiedo

Grazie! Mi hai risparmiato tempo e questo è ancora di gran lunga il modo più intelligente che riesco a trovare per risolvere sia la generazione di rapporti di copertura multipla sia il problema del caso unificato in un colpo solo .
Fei

Ho appena modificato la mia risposta con una soluzione migliore @CoderSpinoza
Tomasz Kalkosiński

11
La versione aggiornata non è così buona , se i tuoi casi di test utilizzano risorse specifiche del modulo durante il suo tempo di esecuzione, preferisco ancora la soluzione originale.
Fei

Come ottengo questa configurazione per rispettare le mie dipendenze Gradle? Ora, fallisce sulle classi mancanti da Guava. Quando si eseguono i test di un singolo modulo, funziona bene.
Jorn

22

Devi creare una "Configurazione di esecuzione":

  1. Vai al menu a discesa in alto, a destra del pulsante "Crea" e fai clic su di esso
  2. Seleziona "Modifica configurazioni"
  3. Ora fare clic sul pulsante "+" per aggiungere una nuova configurazione della corsa e selezionare JUnit
  4. Quindi, quando configuri "Esegui configurazione", troverai un menu a discesa "Tipo di prova", seleziona "Tutte le classi nella directory"
  5. Seleziona la directory che vuoi usare come root, puoi scegliere la directory di primo livello per il tuo progetto o una qualsiasi delle directory per i tuoi moduli.
  6. Seleziona il modulo IntelliJ da cui prendere il classpath (può essere il progetto di primo livello se ha un classpath)

Grazie per il suggerimento, anche se non risolve il problema. Il modo perfetto sarebbe selezionare diverse directory, non solo una. La soluzione pertiale è quella di utilizzare i modelli, ma può comunque solo
modellare

15
In "Tipo di prova" scegli "Tutto nel pacchetto" e quindi seleziona la casella "In tutto il progetto". Ciò eseguirà test in tutti i moduli.
Martin Odhelius

5
Vorrei che ogni modulo funzionasse con la propria directory del modulo come directory di lavoro - ciò non sembra possibile, sembra utilizzare una singola directory del modulo per l'intera cosa.
bacar

@MartinOdhelius questa è la soluzione più pulita finora
Hemil

10

Seleziona tutti i moduli, fai clic con il pulsante destro del mouse e scegli di eseguire tutti i test. Questo creerà una configurazione chiamata "Whole Project" che potrai eseguire di nuovo in qualsiasi momento.

L'ho trovato migliore della risposta accettata perché esegue gli unit test separatamente per ciascun modulo. Se i tuoi casi di test utilizzano risorse specifiche del modulo durante il tempo di esecuzione, il modo migliore della risposta accettata non funzionerà.

Seleziona tutti i moduli

Seleziona tutti i moduli

Fare clic con il tasto destro e scegliere di eseguire tutti i test

Fare clic con il tasto destro e scegliere di eseguire tutti i test

Ottieni una nuova configurazione della corsa

Ottieni una nuova configurazione della corsa


È sufficiente selezionare più di un modulo nel primo passaggio.
user7610

2
Secondo me questa dovrebbe essere la risposta accettata. L'unica riserva che ho è l'uso del termine "più facile". Sfortunatamente non c'è niente di facile nelle configurazioni di esecuzione con Intellij. Esistono molti modi per eseguire semplici attività con le configurazioni e di solito solo uno, se del caso, funziona. Quindi il tuo compito è spesso scorrere tutte le diverse opzioni alla ricerca di quella che funziona. Per niente facile.
David Sackstein

Questo esegue tutti i test nel progetto (intero progetto), anche se sto selezionando una piccola parte dei moduli. Questo non è quello che voglio. Nel mio caso tutti i moduli per i quali voglio eseguire i test condividono un pacchetto comune, quindi sono in grado di modificare la configurazione risultante "Intero progetto" e aggiungere il Pacchetto, che filtra per eseguire il test solo per il sottoinsieme di moduli.
Albert Vila Calvo

5

Per me entrambe le soluzioni non hanno funzionato o non hanno funzionato come previsto.

Per me ho 3 moduli. Le mie dipendenze dei moduli hanno questo aspetto

Presentazione -> Dominio -> Dati

Volevo solo eseguire tutti i test insieme. Così ho ideato l'approccio "Across module dependencies"

Le mie impostazioni hanno questo aspetto:

inserisci qui la descrizione dell'immagine


2

Questo ha funzionato per me per un progetto con più moduli.

Crea una nuova configurazione di esecuzione / debug di JUnit. Tipo di test: "Tutto nel pacchetto" Ricerca di test: "Intero progetto"

Dovrai anche specificare una directory di lavoro.


È quello che ho finito per fare anch'io.
miva2

1

Un altro caso non così ovvio è quando la copertura del codice è necessaria su più di un progetto. La soluzione ingenua sarebbe quella di selezionare più progetti ed eseguire tutti i test unitari in essi contemporaneamente. A quanto pare, gli unit test potrebbero non riuscire se il percorso di classe cambia e IntelliJ ha esattamente una voce di percorso di classe per configurazione di esecuzione. In questo caso, l'esecuzione di unit test sui progetti in sequenza è effettivamente sufficiente. Questo perché alla fine di ogni esecuzione IntelliJ (2017.2.5 Community Edition) chiede se la copertura raccolta deve sostituire o deve essere aggiunta alle statistiche di copertura raccolte in precedenza.

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.