J'essaie de proposer une exécution de test maven parallèle pour les tests d'intégration. L'utilisation de sql-maven-plugin pour créer une base de données de test avant le début de l'exécution du test, en conjonction avec les paramètres du plugin maven surefire et l'exécution parallèle, semble être une bonne approche pour commencer. Ce que je n'arrive pas à comprendre, c'est comment utiliser les propriétés du système que le plugin surefire définit, avec sql-maven-plugin (ou tout autre plugin d'ailleurs). J'ai une configuration qui échoue à ce sujet.Plugin Maven surefire, définition et obtention des propriétés du système au cours du cycle de vie de la construction
configuration du plugin infaillible:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<forkCount>2</forkCount>
<reuseForks>true</reuseForks>
<argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
<systemPropertyVariables>
<databaseSchema>test_schema_${surefire.forkNumber}</databaseSchema>
</systemPropertyVariables>
</configuration>
</plugin>
configuration SQL-maven-plugin:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sql-maven-plugin</artifactId>
<version>1.5</version>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector-java.version}</version>
</dependency>
</dependencies>
<configuration>
<driver>com.mysql.jdbc.Driver</driver>
<username>user_with_create_privs</username>
<password>password</password>
<url>jdbc:mysql://localhost/dummy_schema</url>
</configuration>
<executions>
<execution>
<id>create-db</id>
<phase>process-test-classes</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<url>jdbc:mysql://localhost/dummy_schema</url>
<autocommit>true</autocommit>
<sqlCommand>create database ${databaseSchema}</sqlCommand>
</configuration>
</execution>
</executions>
</plugin>
exécution du shell:
mvn test
sortie résultat:
[DEBUG] SQL: drop database ${databaseSchema}
[ERROR] Failed to execute: drop database ${databaseSchema}
[ERROR] Failed to execute goal org.codehaus.mojo:sql-maven-plugin:1.5:execute
(create-db) on project billing-core: You have an error in your SQL syntax; check
the manual that corresponds to your MySQL server version for the right
syntax to use near '{databaseSchema}' at line 1 -> [Help 1]
Alors, ressemble à $ {} DatabaseSchema n'est pas renseigné, ou un problème de syntaxe. J'ai joué du violon, mais je n'arrive pas à le faire fonctionner, même si cela semble facile.
Pour les tests d'intégration, vous devriez jeter un oeil à le plugin Maven failsafe. –
'systemPropertyVariables' de Surefire définira une propriété système lors de la création de la JVM exécutant les tests. Évidemment, lorsque Maven essaie d'exécuter sql-maven-plugin, cette propriété n'est pas un ensemble de propriétés pour le projet Maven. – Tome
@Tome Donc, pour l'essentiel, sql-maven-plugin et le plugin surefire ne sont pas compatibles comme je le souhaite? – Wrench