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.