Construção do Gradle sem testes


636

Eu quero executar gradle buildsem executar os testes de unidade. Eu tentei:

$ gradle -Dskip.tests build

Isso não parece fazer nada. Existe algum outro comando que eu poderia usar?


1
Talvez isso ajude você Gradle Buil sem testes
rapaz desonestos

Você está usando Java ??
Naga

2
-DskipTestsé para Maven
Gayan Weerakutti

Respostas:


1241

Você deve usar o -xargumento da linha de comando que exclui qualquer tarefa.

Tentar:

gradle build -x test 

Atualizar:

O link no comentário de Peter mudou. Aqui está o diagrama do guia do usuário Gradle


45
Essa é a resposta correta. 'gradle assemble' também deixará de fora muitas outras tarefas. Veja este diagrama para ter uma ideia. Para construções típicas da vida real, o 'gradle assemble' deixará de fora ainda mais tarefas.
Peter Niederwieser

13
O link do @PeterNiederwieser não é mais válido. Provavelmente ele estava se referindo a este diagrama: gradle.org/docs/current/userguide/img/javaPluginTasks.png
Dave L.

9
Funciona embora você possa precisar adicionar, por exemplo, -x integTeste assim por diante, não tão conveniente quanto o cobertor de Maven -DskipTests.
Jesse Glick

1
@c_maker, como fazer isso no eclipse?
Rinuthomaz

É possível executar o arquivo de classe? Quero dizer, runconsigo ver o efeito do meu programa Hello. Mas acho que está compilando tudo novamente. Eu gostaria apenas de executar o programa java.
Sigur

107

Tentar:

gradle assemble

Para listar todas as tarefas disponíveis para o seu projeto, tente:

gradle tasks

ATUALIZAR:

Esta pode não parecer a resposta mais correta a princípio, mas leia atentamente os gradle tasksresultados ou documentos.

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

8
Como uma dica adicional no caso de você estar depurando seus testes de unidade: gradle assemblenão compilará os arquivos principais. Se você trabalha para consertar seu teste de unidade, precisa gradle assemble testClasses: acho que a nomeação da tarefa de compilação é bastante confusa.
Martin Martin

36

A resposta aceita é a correta.

OTOH, a maneira como resolvi isso anteriormente foi adicionar o seguinte a todos os projetos:

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

Execute a construção com -Dskip.tests=truee todas as tarefas de teste serão ignoradas.


3
Para mim, essa ainda é a única opção de trabalho, pois o teste -x parece funcionar apenas no projeto inicial, mas não para dependências em uma compilação de vários projetos (testada no gradle 2.1). Coloque o test.onlyif ... em um bloco configure (subprojects.findAll {javaProjects.contains (it.name)}) {} em seu build.gradle raiz e ele funcionará para todos os projetos.
Timm

Um bom. Essa maneira é familiar para os usuários experientes.
AlexR

23

Você pode adicionar as seguintes linhas a build.gradle, **/*exclui todos os testes.

test {
    exclude '**/*'
}

2
Esta é a melhor resposta IMHO
Marco Sulla

1
Obrigado! sua resposta foi útil.
JAY PATEL 17/01


4

Referência

Para excluir qualquer tarefa da gradle, use -xa opção de linha de comando. Veja o exemplo abaixo

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'
}

Saída de: gradle -q dist -x runningTest

task compile
compile test
running distribution job

Espero que isso lhe dê as informações básicas


envie uma captura de tela da página. Eu não sei onde colocar esta linha de código ....
Hossein Mansouri

Este pedaço de código deve ir em seu build.gradle :)
Suganthan Madhavan Pillai

2

a maneira diferente de desativar as tarefas de teste no projeto é:

tasks.withType(Test) {enabled = false}

Às vezes, esse comportamento é necessário se você deseja desativar os testes em um de um projeto (ou no grupo de projetos).

Dessa forma, trabalhando para todo o tipo de tarefa de teste, não apenas para 'testes' em java. Além disso, esse caminho é seguro. Aqui está o que quero dizer, digamos: você tem um conjunto de projetos em diferentes idiomas: se tentarmos adicionar esse tipo de registro no main build.gradle:

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

falharemos em um projeto quando, se não tivermos nenhuma tarefa chamada testes


2

Usar -x testignorar a execução do teste, mas isso também exclui a compilação do código de teste.

gradle build -x test 

No nosso caso, temos um processo de CI / CD em que um objetivo é a compilação e o próximo objetivo é o teste (Build -> Test).

Portanto, para o nosso primeiro Buildobjetivo, queríamos garantir que todo o projeto fosse bem compilado. Para isso, usamos:

./gradlew build testClasses -x test

No próximo objetivo, simplesmente executamos testes.


0
gradle build -x test --parallel

Se sua máquina possui vários núcleos. No entanto, não é recomendável usar limpeza paralela.


0

Por favor tente isto:

gradlew -DskipTests=true build


6
@KirankumarDafda - no. Você pode postar uma resposta sempre que quiser, mesmo que uma resposta existente tenha sido aceita. A nova resposta pode ser melhor que a resposta aceita, resolvê-la de uma maneira diferente ou ajudar os outros. Da revisão .
Wai Ha Lee

@WaiHaLee Não consigo editar meu comentário, mas, como recebi sugestões para novos usuários, queria explicar que tente adicionar respostas com mais esclarecimentos para que outros usuários possam verificar se essa resposta ou código é útil para eles.
Kirankumar Dafda

0

No plug - in 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.

Gradle build sem teste, você tem duas opções:

$ gradle assemble
$ gradle build -x test

mas se você quiser compilar teste:

$ gradle assemble testClasses
$ gradle testClasses
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.