mvn example compile maven-2 testing

maven-2 - example - maven properties



Código de prueba de uso compartido en Maven (4)

Gracias por la sugerencia del módulo base. Sin embargo, prefiero no crear un nuevo módulo solo para este propósito.

Encontré una respuesta aceptable en la documentación y un blog de Surefire Maven . Consulte también " Cómo crear un contenedor que contenga clases de prueba ".

Esto crea un archivo jar de código de src/test/java utilizando el plugin jar para que los módulos con pruebas puedan compartir el código.

<project> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.4</version> <executions> <execution> <goals> <goal>test-jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>

Para usar el JAR de prueba adjunto creado anteriormente, simplemente especifique una dependencia en el artefacto principal con un clasificador de pruebas especificado:

<project> ... <dependencies> <dependency> <groupId>com.myco.app</groupId> <artifactId>foo</artifactId> <version>1.0-SNAPSHOT</version> <type>test-jar</type> <scope>test</scope> </dependency> </dependencies> ... </project>

¿Cómo puedes depender del código de prueba de otro módulo en Maven?

Ejemplo, tengo 2 módulos:

  • Base
  • Principal

Me gustaría un caso de prueba en Main para extender una clase de prueba base en Base. es posible?

Actualización: se encontró una respuesta aceptable , que implica la creación de un contenedor de prueba.


Recomiendo usar tipo en lugar de clasificador (ver también: classifier ). Le dice a Maven un poco más explícitamente lo que estás haciendo (y he descubierto que a m2eclipse y q4e les gusta más).

<dependency> <groupId>com.myco.app</groupId> <artifactId>foo</artifactId> <version>1.0-SNAPSHOT</version> <type>test-jar</type> <scope>test</scope> </dependency>


Sí ... solo incluye el módulo base como una dependencia en Main. Si solo heredas el código de prueba, puedes usar la etiqueta de alcance para asegurarte de que Maven no incluye el código en tu artefacto cuando se implementa. Algo como esto debería funcionar:

<dependency> <groupId>BaseGroup</groupId> <artifactId>Base</artifactId> <version>0.1.0-SNAPSHOT</version> <scope>test</scope> </dependency>


Solucionamos esto haciendo un proyecto maven con código de prueba como src / main / java y agregando la siguiente dependencia a los proyectos:

<dependency> <groupId>foo</groupId> <artifactId>test-base</artifactId> <version>1</version> <scope>test</scope> </dependency>