Gradle build sin pruebas


636

Quiero ejecutar gradle buildsin ejecutar las pruebas unitarias. Lo intenté:

$ gradle -Dskip.tests build

Eso no parece hacer nada. ¿Hay algún otro comando que pueda usar?


1
Tal vez esto te ayude a Gradle Buil sin pruebas
chaval lad

¿Estás usando Java?
Naga

2
-DskipTestses para Maven
Gayan Weerakutti

Respuestas:


1241

Debe usar el -xargumento de la línea de comando que excluye cualquier tarea.

Tratar:

gradle build -x test 

Actualizar:

El enlace en el comentario de Peter cambió. Aquí está el diagrama de la guía del usuario de Gradle


45
Esta es la respuesta correcta. 'Gradle Assemble' también dejará de lado muchas otras tareas. Vea este diagrama para tener una idea. Para las construcciones típicas de la vida real, 'gradle assemble' dejará fuera aún más tareas.
Peter Niederwieser

13
El enlace de @PeterNiederwieser ya no es válido. Probablemente se estaba refiriendo a este diagrama: gradle.org/docs/current/userguide/img/javaPluginTasks.png
Dave L.

99
Funciona aunque es posible que deba agregar, por ejemplo -x integTest, etc., por lo que no es tan conveniente como la manta de Maven -DskipTests.
Jesse Glick

1
@c_maker, ¿Cómo realizar esto desde eclipse?
rinuthomaz

¿Es posible ejecutar el archivo de clase? Quiero decir, con runpuedo ver el efecto de mi programa Hello. Pero creo que está compilando todo de nuevo. Solo me gustaría ejecutar el programa java.
Sigur

107

Tratar:

gradle assemble

Para enumerar todas las tareas disponibles para su proyecto, intente:

gradle tasks

ACTUALIZAR:

Puede que al principio no parezca la respuesta más correcta, pero lea detenidamente la gradle taskssalida o los documentos.

Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.

8
Como pista adicional en caso de que esté depurando sus pruebas unitarias: gradle assembleno compilará los archivos principales. Si trabaja para reparar su prueba de unidad, entonces necesita gradle assemble testClasses: creo que el nombre de la tarea de construcción es bastante confuso.
Martin

36

La respuesta aceptada es la correcta.

OTOH, la forma en que resolví esto anteriormente fue agregar lo siguiente a todos los proyectos:

test.onlyIf { ! Boolean.getBoolean('skip.tests') }

Ejecute la compilación con -Dskip.tests=truey se omitirán todas las tareas de prueba.


3
Para mí, esta sigue siendo la única opción de trabajo, ya que la prueba -x parece funcionar solo en el proyecto inicial, pero no para las dependencias en una compilación de varios proyectos (probado en Gradle 2.1). Ponga el test.onlyif ... en un bloque configure (subprojects.findAll {javaProjects.contains (it.name)}) {} en su root build.gradle y funcionará para todos los proyectos.
timm

Bueno Esta forma es familiar para los usuarios expertos.
AlexR

23

Puede agregar las siguientes líneas a build.gradle, **/*excluye todas las pruebas.

test {
    exclude '**/*'
}

2
Esta es la mejor respuesta en mi humilde opinión
Marco Sulla

1
¡Gracias! Tu respuesta fue útil.
JAY PATEL


4

Referencia

Para excluir cualquier tarea de gradle, use la -xopción de línea de comandos. Ver el siguiente ejemplo

task compile << {
    println 'task compile'
}

task compileTest(dependsOn: compile) << {
    println 'compile test'
}

task runningTest(dependsOn: compileTest) << {
    println 'running test'
}
task dist(dependsOn:[runningTest, compileTest, compile]) << {
    println 'running distribution job'
}

Salida de: gradle -q dist -x runningTest

task compile
compile test
running distribution job

Espero que esto te dé lo básico


envíe una captura de pantalla de la página. no sé dónde poner esta línea de código ...
Hossein Mansouri

Este código debe ir en su build.gradle :)
Suganthan Madhavan Pillai

2

La forma diferente de deshabilitar las tareas de prueba en el proyecto es:

tasks.withType(Test) {enabled = false}

Este comportamiento a veces es necesario si desea deshabilitar las pruebas en uno de un proyecto (o el grupo de proyectos).

De esta forma, trabajamos para todo tipo de tareas de prueba, no solo para las 'pruebas' de Java. Además, de esta manera es seguro. Esto es lo que quiero decir, digamos: tiene un conjunto de proyectos en diferentes idiomas: si intentamos agregar este tipo de registro en main build.gradle:

 subprojects{
 .......
 tests.enabled=false
 .......
}

fallaremos en un proyecto cuando si no tenemos una tarea llamada pruebas


2

Usar la -x testejecución de prueba de omisión, pero esto también excluye la compilación del código de prueba.

gradle build -x test 

En nuestro caso, tenemos un proceso de CI / CD donde un objetivo es compilar y el siguiente objetivo es probar (Build -> Test).

Entonces, para nuestro primer Buildobjetivo, queríamos asegurarnos de que todo el proyecto se compilara bien. Para esto hemos utilizado:

./gradlew build testClasses -x test

En el próximo objetivo simplemente ejecutamos pruebas.


0
gradle build -x test --parallel

Si su máquina tiene múltiples núcleos. Sin embargo, no se recomienda utilizar una limpieza paralela.


0

Por favor intente esto:

gradlew -DskipTests=true build


66
@KirankumarDafda - no. Puede publicar una respuesta cuando lo desee, incluso si se hubiera aceptado una respuesta existente. La nueva respuesta podría ser mejor que la respuesta aceptada, o resolverla de una manera diferente, o de otra manera ayudar a otros. De la crítica .
Wai Ha Lee

@WaiHaLee No puedo editar mi comentario, pero a medida que recibí sugerencias para nuevos usuarios, quería explicarles que intente agregar respuestas con más aclaraciones para que otro usuario pueda verificar si esta respuesta o código les resulta útil.
Kirankumar Dafda

0

En el complemento de Java :

$ gradle tasks

Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.
testClasses - Assembles test classes.

Verification tasks
------------------
test - Runs the unit tests.

La construcción de Gradle sin prueba tiene dos opciones:

$ gradle assemble
$ gradle build -x test

pero si quieres compilar prueba:

$ gradle assemble testClasses
$ gradle testClasses
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.