Support de maven pour l'exécution des tests

Phases

Les phases suivantes sont spécifiquement dédiées au traitement des tests dans maven:

generate-test-sources Génère le code source des tests
process-test-sources Pré-traitement des sourecs de test avant compilation
generate-test-resources Génère les les ressources pour le test
process-test-resources Copie et traite les ressources pour le test
test-compile Compile les sources de test
test Exécute les tests unitaires
package Empaquette le code compilé (et les ressources) pour distribution
pre-integration-test Exécute des actions nécessaires à laréalisation des tests d'intégration (eg. instancier l'environnement d'exécution)
integration-test Traite et déploie le paquet si nécessaire pour exécution des tests d'intégration
post-integration-test Exécute les actions requises après la findes tests d'intégration (eg. nettoyage)

Les phases de tests d'intégration ne sont liées par défaut à aucun plugin. Voir Cycle de vie.  

Paramètres du POM

<testSourceDirectory>${basedir}/src/test/java</testSourceDirectory>: répertoire contenant les sources de test.

<testOutputDirectory>${basedir}/target/test-classes</testOutputDirectory>: répertoire contenant les classe de tests et les ressources après compilation.  

Plugins

Surefire

http://maven.apache.org/plugins/maven-surefire-plugin/test-mojo.html

Build helper

http://mojo.codehaus.org/build-helper-maven-plugin/

Permet d'attacher des répertoires de sources supplémentaires.  

Note: pour attacher des ressources supplémentaires:

FIT Plugin

http://mojo.codehaus.org/fit-maven-plugin/

Permet d'exécuter des tests d'intégration avec le moteur FIT.  

Verifier plugin

http://maven.apache.org/plugins/maven-verifier-plugin/

Permet de vérifier l'existence de fichiers durant la phase de test et le contenu de ces fichiers:

<verifications>
  <files>
    <file>
      <location>src/main/resources/file1.txt</location>
    </file>
    <file>
      <location>src/main/resources/file2.txt</location>
      <contains>aaaabbbb</contains>
    </file>
    <file>
      <location>src/main/resources/file3.txt</location>
      <exists>false</exists>
    </file>
  </files>
</verifications>

S'exécute durant la phase integration-test

Maven plugin testing harness

http://svn.apache.org/viewvc/maven/shared/trunk/maven-plugin-testing-harness/

Support au test unitaire de plugins:

http://maven.apache.org/developers/committer-testing-plugins.html Page d'aide sur l'écriture de tests de plugin:  

  1. tests unitaire avec harness
  2. tests d'intégration avec maven-it-plugin: lié directement auxphases pre/post-integration, ajout d'une invocation àmaven-install-plugin:install-file pour pouvoir tester un snapshot,utilise maven-verifier ?
  3. autres tests d'intégration avec maven-plugin-test-plugin +maven-embedder (stage/unstage le plugin dans le référentiel local)

La solution 2 est trés dépendante de fonctionnalités instables de maven (version 2.1-SNAPSHOT).  

http://wiki.rodcoffin.com/index.php?title=MavenIntegrationTesting

http://docs.codehaus.org/display/MAVENUSER/How+to+re-use+test+code+between+projects

http://docs.codehaus.org/display/MAVENUSER/Maven+and+Integration+Testing

http://docs.codehaus.org/display/MAVENUSER/Maven2+And+TestNG.Example+pom.xml  

http://docs.codehaus.org/display/MAVEN/Testing+Strategies  

Test unitaire d'EJBs

http://docs.codehaus.org/display/MAVENUSER/How+to+use+the+JBoss+Embedded+EJB3+Container+for+Unit+testing