¿Hay alguna manera de separar las pruebas de larga duración (por ejemplo, pruebas de estrés) para que no se ejecuten de forma predeterminada en Maven 2?

StackOverflow https://stackoverflow.com/questions/251730

Pregunta

Hemos tenido una necesidad constante aquí que no puedo averiguar cómo abordar el uso de las herramientas y la documentación de Maven 2.

Algunos de nuestros desarrolladores tienen pruebas de JUnit de ejecución muy prolongada (generalmente pruebas de esfuerzo) que en ningún caso deben ejecutarse como parte regular del proceso de compilación / compilación nocturna.

Por supuesto, podemos usar el mecanismo de exclusión del plugin surefire y solo despojarlos de la compilación, pero lo ideal sería amar algo que permitiera al desarrollador ejecutarlos a voluntad a través de Maven 2.

¿Fue útil?

Solución

Normalmente, agregaría un perfil a su configuración de Maven que ejecuta un conjunto diferente de pruebas:

ejecuta esto con mvn -Pintegrationtest install

    <profile>
        <id>integrationtest</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                        <argLine>-client -Xmx896m -XX:MaxPermSize=192m</argLine>
                        <forkMode>once</forkMode>
                        <includes>
                            <include>**/**/*Test.java</include>
                            <include>**/**/*IntTest.java</include>
                        </includes>
                        <excludes>
                            <exclude>**/**/*SeleniumTest.java</exclude>
                        </excludes>
                    </configuration>
                </plugin>
            </plugins>
        </build>
        <activation>
            <property>
                <name>integrationtest</name>
            </property>
        </activation>
    </profile>

Otros consejos

Agregando a la respuesta de krosenvold , para asegurarte de que no haya un comportamiento inesperado, asegúrate de tener también un perfil predeterminado que esté activo de forma predeterminada que excluye la integración o las pruebas de resistencia Quiero correr en tu perfil especial.

<profile>
    <id>normal</id>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>**/**/*IntTest.java</exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
</profile>

Necesitará crear un perfil como este, simplemente listar el plugin surefire fuera de un perfil anulará el perfil si se selecciona con:

mvn -P integrationtest clean install

Utilice un complemento de prueba de integración como Thingy de prueba de integración super útil para pruebas de integración separadas (de larga ejecución, sistémicas) de la prueba de unidad (los puristas dicen 30 segundos como máximo para que se ejecuten todas las pruebas de unidad verdaderas). Haga dos paquetes de Java para sus pruebas unitarias frente a las pruebas de integración.

Luego, no vincule este complemento a una fase (el ciclo de vida normal de Maven) y solo ejecútelo cuando se lo llame explícitamente como objetivo, de esta forma: mvn shitty: clean shitty: install shitty: test

<plugins>
  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>shitty-maven-plugin</artifactId>
  </plugin>
</plugins>

De esta manera, sus desarrolladores normales no se verán afectados y podrá ejecutar pruebas de integración a pedido.

Otra opción es hacer que la prueba de esfuerzo detecte que se está ejecutando en Maven y que se ejecute solo una o dos veces. es decir, convertir en una prueba funcional regular. De esta manera, puede comprobar que el código sigue siendo bueno, pero no se ejecutará durante mucho tiempo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top