Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

255
Vistas
¿Cómo hacer que MavenProject se inyecte en el mojo durante la búsqueda de prueba?

Esta es mi prueba (maven-plugin-testing-harness 3.3.0, junit 5.6.2):

 import java.io.File; import org.apache.maven.plugin.testing.AbstractMojoTestCase; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; public final class MyMojoTest extends AbstractMojoTestCase { @BeforeEach public void setup() throws Exception { this.setUp(); } @Test public void executeIt() throws Exception { final File pom = new File("src/test/resources/my-test-pom.xml"); final MyMojo mojo = MyMojo.class.cast( this.lookupMojo("mygoal", pom) ); mojo.execute(); } }

Esto es lo que tengo en MyMojo (maven-plugin-api 3.8.4):

 import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; @Mojo(name = "my", defaultPhase = LifecyclePhase.COMPILE) public final class MyMojo extends AbstractMojo { @Parameter(defaultValue = "${project}", readonly = true) private MavenProject project; }

El problema es que mojo devuelto por lookupMojo() no tiene el conjunto de atributos del project (es null ).

Aquí se propuso alguna solución, pero no estoy seguro de cómo puede funcionar con JUnit 5.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Soluciones posibles

Solución #1: Use el método AbstractMojoTestCase.lookupConfiguredMojo()

Considere la implementación de la clase de prueba como ejemplo: maven-plugin-testing/ParametersMojoTest.java en maven-plugin-testing-3.3.0 · apache/maven-plugin-testing .

Teniendo en cuenta este ejemplo, tenga en cuenta el enfoque de creación de instancias de Mojo:

  1. El método readMavenProject() .

  2. La creación de instancias de Mojo utiliza los readMavenProject() y lookupConfiguredMojo() :

     MavenProject project = readMavenProject( new File( "src/test/projects/default" ) ); ParametersMojo mojo = (ParametersMojo) lookupConfiguredMojo( project, "parameters" );

Este enfoque de creación de instancias de Mojo proporciona al Mojo instanciado el valor correcto del parámetro MavenProject .

Algunas referencias adicionales

  • Respuesta de desbordamiento de pila relacionada.

Solución n.º 2: prueba pom.xml para el complemento: usa el código auxiliar del proyecto

Es necesario actualizar el archivo test pom.xml introduciendo el elemento project (del elemento de configuration ) con el stub.

Por ejemplo:

 <project> <…> <build> <plugins> <plugin> <artifactId>touch-maven-plugin</artifactId> <configuration> <project implementation="org.apache.maven.plugin.testing.stubs.MavenProjectStub"> <groupId implementation="java.lang.String">test-group-id</groupId> <artifactId implementation="java.lang.String">test-artifact-id</artifactId> <version implementation="java.lang.String">1.0.0-SNAPSHOT</version> </project> <…> </configuration> </plugin> </plugins> </build> </project>

Algunas referencias adicionales

  • Un ejemplo. maven-jar-plugin/pom.xml en maven-jar-plugin-3.2.2 · apache/maven-jar-plugin .
  • Respuesta de desbordamiento de pila relacionada.
over 4 years ago · Santiago Trujillo Denunciar

0

Probé con las mismas configuraciones mencionadas anteriormente. El complemento funciona bien, pero ninguna de las pruebas que tienen lookupMojo() parece estar funcionando.

Un ejemplo de prueba similar se puede consultar aquí . Hay una diferencia en el método de MyMojoTest setUp el ejemplo proporcionado en el enlace.
super.setUp(); debe llamarse en lugar de this.setUp() para inicializar todos los objetos en la clase AbstractMojoTestCase .

La posible razón por la que el caso de prueba con maven-plugin-testing-harness 3.3.0 y junit 5.6.2 no funcionará porque no son compatible .
las razones son

  1. maven-plugin-testing-harness fue creado para ser compatible con Junit4 . La última actualización fue hace mucho tiempo , es decir, el 17 de diciembre de 2014. Junit 4 y Junit 5 no son compatibles. Tenemos que hacer uso de Junit-Vintage-Engine para que funcione.
  2. maven-plugin-testing-harness se desarrolló utilizando JDk-7 y los requisitos mínimos para Junit 5 son Jdk-8 . Información del archivo de manifiesto del complemento de harness

Id. de proveedor de implementación: org.apache.maven.plugin-testing
Creado por: igor
Build-Jdk: 1.7.0_55
Especificación-Proveedor: El software Apache
Título de la especificación de la fundación: Mecanismo de prueba del complemento de Maven

  1. La versión de Maven admitida también es diferente para ambos frascos. Enlace

Pocos otros enlaces confirman lo mismo.

Hay muy pocas bibliotecas y enlaces informativos disponibles para probar complementos con Junit5. Solo pude encontrar un puñado de ellos, aunque aún no los he probado.

Biblioteca:

 <dependency> <groupId>com.soebes.itf.jupiter.extension</groupId> <artifactId>itf-assertj</artifactId> <version>0.11.0</version> <scope>test</scope> </dependency>

Algunas bibliotecas de extensión de Júpiter más en este enlace

Ejemplos relacionados con ella.

  • Ejemplo 1
  • Ejemplo 2
  • Ejemplo 3
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda