tutorial proyecto mvn español ejecutar desde consola compile compilar como comandos java unit-testing maven-2

java - proyecto - Ejecutar un solo método de prueba con maven.



maven tutorial pdf (11)

A partir de la versión 2.22.1 (posiblemente anterior) del complemento surefire, puede ejecutar una prueba única utilizando la propiedad testnames cuando use testng.xml

Dado un siguiente testng.xml

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="Suite"> <test name="all-tests"> <classes> <class name="server.Atest"/> <class name="server.Btest"/> <class name="server.Ctest"/> </classes> </test> <test name="run-A-test"> <classes> <class name="server.Atest"/> </classes> </test> <test name="run-B-test"> <classes> <class name="server.Btest"/> </classes> </test> <test name="run-C-test"> <classes> <class name="server.Ctest"/> </classes> </test> </suite>

con el pom.xml

<?xml version="1.0" encoding="UTF-8"?> <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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> [...] <properties> <selectedTests>all-tests</selectedTests> </properties> [...] <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.1</version> <configuration> <suiteXmlFiles> <file>src/test/resources/testng.xml</file> </suiteXmlFiles> <properties> <property> <name>testnames</name> <value>${selectedTests}</value> </property> </properties> </configuration> </plugin> </plugins> [...] </project>

Desde linea de comando

mvn clean test -DselectedTests=run-B-test

Lecturas adicionales - Maven surefire plugin using testng

Sé que puedes ejecutar todas las pruebas en una clase determinada usando:

mvn test -Dtest=classname

Pero quiero ejecutar un método individual y -Dtest = classname.methodname no parece funcionar.


Ejecutar un conjunto de métodos en una clase de prueba única Con la versión 2.7.3, puede ejecutar solo n pruebas en una clase de prueba única.

NOTA: es compatible con junit 4.x y TestNG.

Debes usar la siguiente sintaxis

mvn -Dtest=TestCircle#mytest test

Puedes usar patrones también

mvn -Dtest=TestCircle#test* test

A partir de surefire 2.12.1, puede seleccionar varios métodos (solo JUnit4X en este momento, los parches son bienvenidos)

mvn -Dtest=TestCircle#testOne+testTwo test

Consulta este enlace sobre pruebas individuales.


El parámetro de prueba mencionado por tobrien le permite especificar un método utilizando un # antes del nombre del método. Esto debería funcionar para JUnit y TestNG. Nunca lo he probado, solo léelo en la página del complemento Surefire :

Especifique este parámetro para ejecutar pruebas individuales por nombre de archivo, anulando los parámetros de inclusión / exclusión. Cada patrón que especifique aquí se usará para crear un patrón de inclusión con el formato ** / $ {test} .java, así que solo puede escribir "-Dtest = MyTest" para ejecutar una sola prueba llamada "foo / MyTest.java". Este parámetro anula los parámetros de inclusión / exclusión y el parámetro TestNG suiteXmlFiles. desde 2.7.3 Puede ejecutar un número limitado de métodos en la prueba agregando #myMethod o # my * ethod. Si type "-Dtest = MyTest # myMethod" es compatible con junit 4.x y testNg


Este comando funciona !! mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test Tenga en cuenta que "-DTest" comienza con MAYÚSCULAS ''T''.


Hay un problema con surefire 2.12. Esto es lo que me sucedió cambiando el plugin maven-surefire de 2.12 a 2.11:

  1. mvn test -Dtest=DesignRulesTest

    Resultado:
    [ERROR] Error al ejecutar el objetivo org.apache.maven.plugins: maven-surefire-plugin: 2.12 : prueba (prueba predeterminada) en el proyecto pmd: ¡ No se ejecutaron pruebas!

  2. mvn test -Dtest=DesignRulesTest

    Resultado: [INFO] --- maven-surefire-plugin: 2.11 : test (default-test) @ pmd --- ... Ejecutando net.sourceforge.pmd.lang.java.rule.design.DesignRulesTest Pruebas ejecutadas: 5 , Fallos: 0, Errores: 0, Saltado: 4, Tiempo transcurrido: 4.009 seg.



Lo que hago con mi TestNG, (lo siento, JUnit no admite esto) los casos de prueba es que puedo asignar un grupo a la prueba que quiero ejecutar

@Test(groups="broken")

Y luego simplemente ejecuta ''mvn -Dgroups = broken''.


Para ejecutar un solo método de prueba en Maven, debe proporcionar el comando como:

mvn -Dtest=TestCircle#xyz test

donde TestCircle es el nombre de la clase de prueba y xyz es el método de prueba.

Los caracteres comodín también funcionan; tanto en el nombre del método como en el nombre de la clase.

Si está realizando pruebas en un proyecto de varios módulos, especifique el módulo en el que se encuentra la prueba con -pl <module-name> .

Para las pruebas de integración use la opción it.test=... lugar de test=... :

mvn -pl <module-name> -Dit.test=TestCircle#xyz integration-test


Puede ejecutar clases de prueba y métodos específicos utilizando la siguiente sintaxis:

  1. paquete completo: mvn test -Dtest = "com.oracle.tests. **"

  2. todos los métodos en una clase: mvn test -Dtest = CLASS_NAME1

  3. método único de una clase: mvn test -Dtest = CLASS_NAME1 # METHOD_NAME1

  4. método múltiple de clase múltiple: prueba mvn -Dtest = CLASS_NAME1 # METHOD_NAME1, CLASS_NAME2 # METHOD_NAME2


Puede ejecutar una única clase de prueba, pero no un solo método dentro de una clase de prueba. Utiliza el nombre simple de la clase, no el nombre completo de la clase. Por lo tanto, si tiene una prueba en "org.sonatype.test.MyTest" y esa es la única prueba que desea ejecutar, su línea de comando se vería así:

mvn test -Dtest=MyTest


Que yo sepa, el plugin surefire no proporciona ninguna manera de hacer esto. Pero no dude en abrir un issue :)