Pacote / instalação do Maven sem teste (pular testes)

343

Estou tentando empacotar meu projeto. Porém, ele executa automaticamente os testes anteriores à execução da embalagem. Os testes inserem algum conteúdo no banco de dados. Não é isso que eu quero, preciso evitar a execução de testes enquanto empacota o aplicativo. Alguém sabe como executar o pacote sem teste?

vks
fonte
13
Um teste de unidade deve consistir nas quatro fases a seguir: Inicialização, Teste, Verificação e Desmontagem. Talvez você deva ajustar seus testes e adicionar uma desmontagem / limpeza adequada do seu banco de dados ou usar uma instância de banco de dados separada, não incluída no seu arquivo jar, para executar seus testes.
Marc-Christian Schulze
Parece que seus testes são "pesados", portanto você não deseja executá-los. Mas é uma prática ruim. Talvez algumas estruturas como o DBUnit possam ajudá-lo? Ou você pode reverter as alterações no banco de dados no final do teste?
Mickael Marrache 27/11

Respostas:

573

Execute o maven com

mvn package -Dmaven.test.skip=true 
Giorgos Dimtsas
fonte
11
obrigado pela resposta imediata, estou executando o eclipse, onde adiciono o comando -Dmaven.test.skip = true?
VKS
10
Eu nunca iniciei o mvn a partir do eclipse, mas na janela Configuração de Execução, na qual você configura os destinos e os perfis do maven, há uma caixa de seleção 'Ignorar Teste'. Talvez isso funcione.
Giorgos Dimtsas
9
de acordo com a documentação que ignorará a compilação e também a execução. Você pode usar -DskipTests para ignorar a execução. Este post também fornece alguns avisos sobre com quais versões você pode usar cada sinalizador.
JonnyRaa
11
Muito obrigado, eu costumava fazer isso usando, -DskipTestsmas não funciona mais, alguma ideia do porquê?
sam
7
Observe que a documentação do Maven Surefire Plugin e do Maven Failsafe Plugin sugere que a configuração skipTestsé preferida à configuração maven.test.skip.
Filip Bártek
172

Basta fornecer o comando mencionado abaixo que ignorará a execução dos casos de teste,

mvn package -DskipTests
Jayakumar J
fonte
4
para mim isso não funcionaria. Eu tive de usar a solução aceita vez
Sebas
11
-DskipTestsnão funcionou para mim quando eu useimvn clean install -DskipTests
Vishrant
11
Sua parcialmente bem, pois não irá executar teste, mas ele vai comile classes de teste .....
Antoniossss
Para os seguidores, -DskipTestsé o mesmo que -Dmaven.test.skip.exec=true stackoverflow.com/a/21933970/32453 e sim, ele compila os testes e não os executa (enquanto -Dmaven.test.skip=truenão os compila)
rogerdpack
47

você pode adicionar essa configuração de plug-in ao seu pom se não desejar definir a linha de comando arg:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <skipTests>true</skipTests>
  </configuration>
</plugin>
smp7d
fonte
3
Você não pode mais executar os testes na linha de comando com esta configuração.
Emmanuel Bourg
11
@EmmanuelBourg Isso pode ser remediado por seguintes instruções neste exemplo maven.apache.org/plugins/maven-surefire-plugin/examples/...
smp7d
41

Observe que -Dmaven.test.skip impede o Maven de criar o artefato do frasco de teste.

Se você quiser pular testes, mas criar artefatos de acordo com uma construção normal, use:

-Dmaven.test.skip.exec
Chris Beach
fonte
11
Este foi o asnwer que eu estava procurando, funciona muito bem.
Binita Bharati
Como diabos eu devo me lembrar disso? Por que não criar um alias óbvio e memorável simples como "skipTests"?
TheRealChx101 24/01
32

Se você estiver tentando isso no Windows Powershell, receberá este erro:

[ERROR] Unknown lifecycle phase ".test.skip=true". You must specify a valid lifecycle phase or a goal in the format...

A razão para isso é que, em Powershell, o " -" tem um significado especial e está causando problemas com o maven.

A solução é anexá-lo com um backtick (`), assim ..

mvn `-Dmaven.test.skip=true install 

Referência: http://kuniganotas.wordpress.com/2011/08/12/invalid-task-test-skiptrue-you-must-specify-a-valid-lifecycle-phase/

Rosdi Kasim
fonte
11
Eu tive o mesmo problema e isso resolveu para mim. Valeu.
nsof 25/02/2015
26
<properties>
    <maven.test.skip>true</maven.test.skip>
</properties>

também é uma maneira de adicionar um arquivo pom

vimal krishna
fonte
18

Você pode passar o maven.test.skipsinalizador como um argumento da JVM, para ignorar os testes em execução quando a fase do pacote (e as anteriores no ciclo de vida padrão) for executada:

mvn package -Dmaven.test.skip=true

Você também pode passar o skipTestssinalizador sozinho para o executável mvn. Se você deseja incluir essas informações no seu POM, pode criar um novo perfil no qual pode configurar maven-surefire-pluginpara ignorar os testes .

Vineet Reynolds
fonte
17

Você só precisa fornecer

-Dmaven.test.skip

Você não precisa mais anexar =true.

Adriaan Koster
fonte
13

No Inllij IDEA, há uma opção também para pular a meta de teste.

insira a descrição da imagem aqui

Dushmantha
fonte
11

Respondendo a uma pergunta antiga e aceita aqui. Você pode adicionar isso no seu pom.xml se quiser evitar passar argumentos de linha de comando o tempo todo:

  <properties>
    <skipTests>true</skipTests>
  </properties>
anubhava
fonte
10

Você pode adicionar um -DskipTestsou -Dmaven.test.skip=truea qualquer mvncomando para ignorar os testes. No seu caso, seria como abaixo:

mvn package -DskipTests

OU

mvn package -Dmaven.test.skip=true
Sahil Chhabra
fonte
4

Os testes devem sempre [1] executar antes do pacote. Se você precisar desativar os testes, estará fazendo algo errado. Em outras palavras, você está tentando resolver o problema errado. Descubra qual é realmente o seu problema e faça essa pergunta. Parece que está relacionado ao banco de dados.

[1] Você pode pular testes quando precisar gerar rapidamente um artefato para uso local em desenvolvimento, mas, em geral, a criação de um artefato deve sempre seguir uma execução de teste bem-sucedida.

Ryan Stewart
fonte
Eu tenho um problema semelhante: meus aplicativos contêm websocket. Quando executo o mvn clean install, termino em uma série de testes sem fim. Antes de eu forçar o fechamento, o processo já dura três horas e as mensagens impressas são apenas sobre Websocket. Você pode verificar meu problema para ver o que estou fazendo de errado? stackoverflow.com/questions/54614739/...
georgeB
As regras sempre têm exceções. Se você não acha, está errado.
Jay Sullivan
4

somente mvn clean install -DskipTests

Ravinda lakshan
fonte
3

Uma notação abreviada para fazer testes de construção e ignorar seria:

Instalação limpa do mvn -DskipTests

Sourabh Bhavsar
fonte
2

Para embalagem maven sem infectar teste maven:

<properties>
    <maven.test.failure.ignore>true</maven.test.failure.ignore>
</properties>
igonejack
fonte
Obrigado, eu precisava exatamente disso hoje.
Sean McMillan
1

Obviamente, você está fazendo o caminho errado. O teste é uma parte importante da pré-embalagem. Você não deve ignorá-lo ou ignorá-lo, mas fazê-lo da maneira certa. Tente alterar o banco de dados no qual ele insere os dados (como test_db). Pode demorar um pouco para configurá-lo. E para garantir que esse banco de dados possa ser usado para sempre, você deve excluir todos os dados até o final dos testes. O JUnit4 possui anotações que facilitam para você. Use @Antes, @Após anotações @Test para os métodos corretos. Você precisa gastar algum tempo com isso, mas valerá a pena!

Ozyman
fonte
9
Eu acho que a pergunta e o desejo de empacotar sem executar testes são perfeitamente válidos. Não acho que o OP "obviamente esteja fazendo o caminho errado". Pessoas e projetos diferentes têm necessidades diferentes e, geralmente, não estão alinhadas com a Bíblia Maven ou com as crenças de várias pessoas (como você) sobre como o desenvolvimento de software deve funcionar. Penso que a sua resposta seria mais apreciada sem a sua abordagem condescendente.
Zero3
1

No Intellij, vá em Exibir -> Janelas de Ferramentas -> escolha Projetos Maven. No menu suspenso Lifecyle, clique com o botão direito do mouse em package -> escolha Create 'your-project [package]' ...

Digite este valor: package -Dmaven.test.skip=true -f pom.xmlno campo Linha de comandos. Clique em Aplicar e um menu suspenso Executar configurações deve aparecer junto com o comando maven personalizado criado.

Patrick Tolentino
fonte
por que isso foi prejudicado? Eu uso isso toda vez que eu quis construir meu projeto, mas os testes de salto
Patrick Tolentino
0

mvn clean install -Dmaven.test.skip=true

trabalhou para mim desde -Dskipque não funcionou mais.

Aggie Jon de 87
fonte
0
mvn package -Dmaven.test.skip=true
mcvkr
fonte
-1

A melhor e a maneira mais fácil de fazer isso, no IntelliJ Idea, na janela “Maven Project”, e simplesmente não clique no botão de teste. Espero ter ajudado você. Tenha um bom dia :)

Vladimir
fonte
11
Se você clicar no pacote, ele executará os testes, que é o que o OP está tentando evitar.
Charlie