Teste da primavera 5 com a anotação @EnabledIf

Teste da primavera 5 com a anotação @EnabledIf

*1. Introdução *

Neste artigo rápido, descobriremos as anotações _ @ EnabledIf_ e _ @ DisabledIf_ no Spring 5 usando o JUnit 5.

Simplificando,* essas anotações tornam possível desativar/ativar um teste específico se uma condição especificada for atendida. *

Usaremos uma classe de teste simples para mostrar como essas anotações funcionam:

@SpringJUnitConfig(Spring5EnabledAnnotationIntegrationTest.Config.class)
public class Spring5EnabledAnnotationIntegrationTest {

    @Configuration
    static class Config {}
}

2.* _ @ EnabledIf_ *

Vamos adicionar à nossa classe este teste simples com um literal de texto _ "true" _:

@EnabledIf("true")
@Test
void givenEnabledIfLiteral_WhenTrue_ThenTestExecuted() {
    assertTrue(true);
}

Se executarmos este teste, ele será executado normalmente.

*No entanto, se substituirmos o _String_ fornecido por _ "false" _, ele não será executado:*

link:/wp-content/uploads/2017/11/Captura-test.jpg [imagem:/wp-content/uploads/2017/11/Captura-test.jpg [imagem]]

Lembre-se de que, se você deseja desativar estaticamente um teste, existe um @Disabled anotação para isso.

*3. _ @ EnabledIf_ com um espaço reservado para propriedade *

Uma maneira mais prática de usar _ @ EnabledIf_ é usando um espaço reservado de propriedade:

@Test
@EnabledIf(
  expression = "${tests.enabled}",
  loadContext = true)
void givenEnabledIfExpression_WhenTrue_ThenTestExecuted() {
   //...
}

Primeiro de tudo, precisamos garantir que o parâmetro loadContext esteja definido como true, para que o contexto do Spring seja carregado.

Por padrão, esse parâmetro é definido como false para evitar carregamento desnecessário de contexto.

===* 4. _ @ EnabledIf_ com uma expressão SpEL *

Por fim,* podemos usar a anotação com expressões Spring Expression Language (SpEL). *

Por exemplo, podemos ativar testes apenas ao executar o JDK 1.8

@Test
@EnabledIf("#{systemProperties['java.version'].startsWith('1.8')}")
void givenEnabledIfSpel_WhenTrue_ThenTestExecuted() {
    assertTrue(true);
}

===* 5. _ @ DisabledIf_ *

  • Esta anotação é o oposto de @EnabledIf. *

Por exemplo, podemos desativar o teste ao executar no Java 1.7:

@Test
@DisabledIf("#{systemProperties['java.version'].startsWith('1.7')}")
void givenDisabledIf_WhenTrue_ThenTestNotExecuted() {
    assertTrue(true);
}

===* 6. Conclusão*

Neste breve artigo, examinamos vários exemplos do uso das anotações _ @ EnabledIf_ e _ @ DisabledIf_ nos testes do JUnit 5 usando o SpringExtension.

O código fonte completo para os exemplos está disponível over no GitHub.