Me gustaría omitir solo una prueba al iniciar mvn install
.¿Hay alguna forma de saltear solo una prueba en maven?
¿Hay alguna manera de hacerlo?
Me gustaría omitir solo una prueba al iniciar mvn install
.¿Hay alguna forma de saltear solo una prueba en maven?
¿Hay alguna manera de hacerlo?
Con junit 4, agrego una anotación @Ignore
cuando quiero hacer eso. Esto funcionaría para ti, a menos que quieras ignorar la prueba solo a veces, o solo ignorarla cuando la compilación se ejecute desde maven. Si este es el caso, entonces preguntaría "¿Por qué?"
pruebas deben ser coherentes, que deben ser portátil, y ellos deben pasar siempre. Si una prueba específica es problemática, consideraría volver a escribirla, eliminarla por completo o moverla a una suite o proyecto de prueba diferente.
El caso de uso es que alguien en mi equipo está actualmente arreglando una prueba y quiero lanzar todas las otras pruebas pero no esta hasta que esté funcionando nuevamente . Así que tienes razón, debería desactivarlo por código temporal. – paulgreg
Esto también funciona a nivel de clase. Tengo una prueba base y la configuración de pom no se puede modificar (está en un pom padre compartido), por lo que Maven falla mis pruebas porque dice "sin pruebas" en la clase abstracta. Esta es una gran solución. – ashes999
Esto significa que debe editar/comprometerse para revertir el cambio. Lo mismo para la próxima solución: – jasonnerothin
Creo que esto debería funcionar si se utiliza este comando:
mvn archetype:create -DgroupId=test -DartifactId=test
(para el cambio de prueba pom.xml y de clase de prueba a la siguiente y use instalar MVN)
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>test</groupId>
<artifactId>test</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>test</name>
<url>http://maven.apache.org</url>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludes>
<exclude>
test/AppTest.java
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.5</version>
<scope>test</scope>
</dependency>
</dependencies>
prueba de clase:
package test;
import org.junit.Test;
import static org.junit.Assert.fail;
public class AppTest
{
@Test
public void test_it() {
fail("not implemented");
}
}
Tenga una mirada en this solution, utilizando @Category
anotaciones
public class AccountTest {
@Test
@Category(IntegrationTests.class)
public void thisTestWillTakeSomeTime() {
...
}
@Test
@Category(IntegrationTests.class)
public void thisTestWillTakeEvenLonger() {
...
}
@Test
public void thisOneIsRealFast() {
...
}
}
que luego se ejecuta utilizando un conjunto de pruebas:
@RunWith(Categories.class)
@IncludeCategory(SlowTests.class)
@SuiteClasses({ AccountTest.class, ClientTest.class })
public class LongRunningTestSuite {}
¿Es posible especificar la categoría en la línea de comandos de maven/sin tocar el código? –
Es normal que las pruebas de integración deben ser excluidos, pero las pruebas unitarias necesita ser incluido. Para lograr esto, sugiero nombrar todas las pruebas de integración con una prueba de integración de postfix (por ejemplo, AbcIntegrationTest.java).
y luego en su construcción experta en poner lo siguiente:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludes>
<exclude>**/*IntegrationTest.java</exclude>
</excludes>
</configuration>
</plugin>
Cuando se construye con este todas las pruebas de integración Wil ser excluidos, pero se ejecutan todas las demás pruebas (prueba de la unidad, por ejemplo). :-) perfecta
Para obtener más información sobre exclusing e incluyendo pruebas durante la prueba, leer
http://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html
PS Para exlude una sola prueba sólo hay que nombrar explícitamente en la lista de exclusión. Fácil.
Puede especificar un patrón de exclusión en la opción -Dtest
precediéndolo con un !
(signo de exclamación). Por ejemplo,
mvn -Dtest=\!FlakyTest* install
encontró en here y verificó estar funcionando. P.ej., Yo era capaz de saltar this prueba Jenkins escamosa usando:
mvn -Dtest=\!CronTabTest* package
Esa característica se implementó en 2.19, consulte [la documentación] (http://maven.apache.org/surefire/maven-surefire-plugin/examples/single-test.html#Multiple_Formats_in_One). – rdvdijk
¿Hay alguna forma de combinar incluir y excluir? P.ej. Es posible que desee ejecutar Cron * Test, excepto CronFlakyTest. Intenté 'mvn -Dtest =" \! CronFlakyTest, Cron * Test "install' pero aún se ejecuta la prueba escamosa –
http://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html – Vadzim
Si está utilizando el plugin failsafe: 'mvn clean install -Dit.test = \! TestToSkip. *' –