Ignorando testes com o Maven

Ignorando testes com o Maven

1. Introdução

Ignorar testes geralmente é uma má ideia. No entanto, existem algumas situações em que pode ser útil - talvez quando estamos desenvolvendo um novo código e queremos executar compilações intermediárias nas quais os testes não estão passando ou compilando.

Somente nesses tipos de situações, podemos pular os testes para evitar a sobrecarga de compilar e executá-los. Obviamente, considere que a não execução de testes pode levar a práticas inadequadas de codificação.

Neste tutorial rápido, exploraremosall the possible commands and options to skip tests using Maven.

2. Ciclo de vida do Maven

Antes de entrar nos detalhes de como pular testes,we must understand when tests are compiled or run. No artigo sobreMaven goals and phases, nos aprofundamos no conceito do ciclo de vida do Maven, mas para o propósito deste artigo, é importante saber que o Maven pode:

  1. Ignorar testes

  2. Testes de compilação

  3. Executar testes

Em nossos exemplos, usaremos a fasepackage, que inclui compilar e executar os testes. As opções exploradas ao longo deste tutorial pertencem aMaven Surefire Plugin.

3. Usando sinalizadores de linha de comando

3.1. Ignorando a compilação de teste

Primeiro, vamos ver um exemplo de um teste que não compila:

@Test
public void thisDoesntCompile() {
    example;
}

Quando executamos o comando da linha de comandos:

mvn package

Obteremos um erro:

[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /Users/example/skip-tests/src/test/java/com/antmordel/skiptests/PowServiceTest.java:[11,9] not a statement
[INFO] 1 error

Portanto, vamos explorarhow to skip the compilation phase para as fontes do teste. No Maven, podemos usar o sinalizadormaven.test.skip:

mvn -Dmaven.test.skip package

Como resultado, as fontes de teste não são compiladas e, portanto, não são executadas.

3.2. Ignorando a execução de teste

Como uma segunda opção, vamos ver comowe can compile the test folder but skip the run process. Isso é útil para aqueles casos em que não alteramos a assinatura dos métodos ou classes, mas alteramos a lógica de negócios e, como resultado, quebramos os testes. Vamos considerar um caso de teste planejado como o abaixo, que sempre falhará:

@Test
public void thisTestFails() {
    fail("This is a failed test case");
}

Como incluímos a instruçãofail(), se executarmos a fasepackage, a construção falhará com o erro:

[ERROR] Failures:
[ERROR]   PowServiceTest.thisTestFails:16 This is a failed test case
[INFO]
[ERROR] Tests run: 2, Failures: 1, Errors: 0, Skipped: 0

Let’s imagine we want to skip running the tests but still we want to compile them. Neste caso, podemos usar o sinalizador-DskipTests:

mvn -DskipTests package

e a fase do pacote será bem-sucedida.

Finalmente, vale a pena mencionar que o sinalizador-Dmaven.test.skip.exec, agora obsoleto, também compilará as classes de teste, mas não as executará.

4. Usando a configuração do Maven

No caso de precisarmos excluir a compilação ou execução dos testes por um longo período de tempo, podemos modificar o arquivopom.xml para incluir a configuração adequada.

4.1. Ignorando a compilação de teste

Como fizemos na seção anterior, vamos examinar comowe can avoid compilingé a pasta de teste. Nesse caso, usaremos o arquivopom.xml. Vamos adicionar a seguinte propriedade:


    true

Lembre-se de quewe can override that value by adding the opposite flag in the command line:

mvn -Dmaven.test.skip=false package

4.2. Ignorando a execução de teste

Novamente, como uma segunda etapa, vamos explorar comowe can build the test folder but skip the test execution usando a configuração Maven. Para fazer isso, precisamos configurar o Maven Surefire Plugin com uma propriedade:


    true


    org.apache.maven.plugins
    maven-surefire-plugin
    2.22.1
    
        ${tests.skip}
    

A propriedade Maventests.skip é uma propriedade customizada que definimos anteriormente. Portanto, podemos substituí-lo se quisermos executar os testes:

mvn -Dtests.skip=false package

4. Conclusão

Neste tutorial rápido, exploramos todas as alternativas que o Maven oferece para pular a compilação e / ou execução dos testes.

Analisamos as opções de linha de comando do Maven e as opções de configuração do Maven.