maven 2 - vegetales - ¿Hay alguna forma de saltear solo una prueba en maven?
verduras en juliana salteadas (5)
Me gustaría omitir solo una prueba al iniciar mvn install
.
Hay una manera de hacer eso ?
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é?"
Las pruebas deben ser consistentes, deben ser portátiles y siempre deben pasar. 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.
Creo que esto debería funcionar si usas este comando:
mvn archetype:create -DgroupId=test -DartifactId=test
(para el cambio de prueba pom.xml y test-class a lo siguiente y use mvn install)
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>
clase de prueba:
package test;
import org.junit.Test;
import static org.junit.Assert.fail;
public class AppTest
{
@Test
public void test_it() {
fail("not implemented");
}
}
Echa un vistazo a esta solución , usando anotaciones @Category
public class AccountTest {
@Test
@Category(IntegrationTests.class)
public void thisTestWillTakeSomeTime() {
...
}
@Test
@Category(IntegrationTests.class)
public void thisTestWillTakeEvenLonger() {
...
}
@Test
public void thisOneIsRealFast() {
...
}
}
Que luego ejecuta usando un banco de pruebas:
@RunWith(Categories.class)
@IncludeCategory(SlowTests.class)
@SuiteClasses( { AccountTest.class, ClientTest.class })
public class LongRunningTestSuite {}
Es normal que las pruebas de integración deban excluirse, pero las pruebas unitarias deben incluirse. Para lograr esto, sugiero nombrar todas las pruebas de integración con un postfix IntegrationTest (por ejemplo, AbcIntegrationTest.java).
y luego en tu construcción maven pon lo siguiente:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludes>
<exclude>**/*IntegrationTest.java</exclude>
</excludes>
</configuration>
</plugin>
Cuando compile con esto, se excluirán todas las pruebas de integración, pero se ejecutarán todas las demás pruebas (por ejemplo, prueba de unidad). Perfecto :-)
Para obtener más información sobre exclusiones e incluir pruebas durante la prueba, lea
maven.apache.org/surefire/maven-surefire-plugin/examples/…
PS Para exluir una sola prueba, simplemente necesita nombrarla explícitamente en la lista de exclusión. Fácil.