Junit e Maven, finalmente amici!

... Usare il plugin di Junit per Eclipse con un multi progetto complesso gestito con Maven
a volte può risultare un operazione molto difficile. Il plugin di Maven di Eclipse in verità deve
crescere ancora molto.
Si ha spesso la necessità di aver dei files di risorse filtrati secondo specifiche politiche configurate in Maven.
Purtroppo per Junit è sconosciuta la gestione dei filtri di maven, quindi spesso non si possono
eseguire i test da Eclipse semplicemente perchè tali files necessari non vengono preventivamente filtrati.
Ci si ritrova per esempio a non poter eseguire un test usando "Spring" a causa dell'impossibilità di caricare
il contesto, descritto nel file "application.xml", perchè questo risulta non filtrato ...

Come si può risolvere tal problema?
Maven fornisce la soluzione. Le operazioni consistono nell'eseguire manualmente il filtraggio delle risorse:

mvn process-test-resources -P

avendo configurato opportunamente il "Pom.xml" file alla sezione "resources".

ad es:

<testresources>
<testresource>
<directory>src/test/resources
<filtering>true
<includes>
<include>**/**
</includes>
<targetpath>../filtered-resources</targetpath>
</testresource>
</testresources>

Molto importante come vedremo in seguito è il nodo "targetPath". Esso indicherà a Maven la directory nel quale saranno
generati i files di riscorse.
Lanciando il comando otteremo qualcosa come di seguito:

[INFO] [resources:testResources {execution: default-testResources}]
[INFO] Using 'ISO-8859-1' encoding to copy filtered resources.
[INFO] Copying 18 resources to ../filtered-resources
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 10 seconds
[INFO] Finished at: Sat May 29 12:41:47 CEST 2010
[INFO] Final Memory: 20M/37M
[INFO] ------------------------------------------------------------------------

Ultima operazione sarà quella di impostare la directory "targetPath", nell'esempio: <project>/target/filtered-resources,
nel classpath del test desiderato:

Da Eclipse:

1) Cliccare su "run/run configuration" (o debug in caso)
2) Cliccare la voce "Classpath"
3) Selezionare la voce "User Entries" e cliccare il pulsante "Advanced"
4) Selezionare la voce "Add folder" e procedere alla scelta della cartella identificata con "targetPath"
5) Usando il tasto "up" portare la cartella appena aggiunta alla prima posizione in "User Entries"
6) "Apply" e "run" del test finalmente felici di poterlo fare.

2 commenti:

salvio ha detto...

great! i'll try soon.

tommyalf ha detto...
Questo commento è stato eliminato dall'autore.