Hamcrest Text Matchers

Hamcrest Text Matchers

1. Visão geral

Neste tutorial, exploraremos os Matchers de texto Hamcrest.

Discutimos os Matchers do Hamcrest em geral antes emtesting with Hamcrest, neste tutorial vamos nos concentrar apenas nos Matchers doText.

2. Configuração do Maven

Primeiro, precisamos adicionar a seguinte dependência ao nossopom.xml:


    org.hamcrest
    java-hamcrest
    2.0.0.0
    test

A versão mais recente dejava-hamcrest pode ser baixada do Maven Central.

Agora, vamos mergulhar direto no Hamcrest Text Matchers.

3. Correspondências de igualdade de texto

Podemos, é claro, verificar se duas Strings são iguais usando o matcherisEqual() padrão.

Além disso, temos dois matchers que são específicos para os tiposString:equalToIgnoringCase() eequalToIgnoringWhiteSpace().

Vamos verificar se doisStrings são iguais - ignorando o caso:

@Test
public void whenTwoStringsAreEqual_thenCorrect() {
    String first = "hello";
    String second = "Hello";

    assertThat(first, equalToIgnoringCase(second));
}

Também podemos verificar se doisStrings são iguais - ignorando os espaços em branco à esquerda e à direita:

@Test
public void whenTwoStringsAreEqualWithWhiteSpace_thenCorrect() {
    String first = "hello";
    String second = "   Hello   ";

    assertThat(first, equalToIgnoringWhiteSpace(second));
}

4. Correspondências de texto vazias

Podemos verificar se aString está em branco, o que significa que contém apenas espaços em branco, usando os matchersblankString()eblankOrNullString():

@Test
public void whenStringIsBlank_thenCorrect() {
    String first = "  ";
    String second = null;

    assertThat(first, blankString());
    assertThat(first, blankOrNullString());
    assertThat(second, blankOrNullString());
}

Por outro lado, se quisermos verificar se aString está vazio, podemos usar os matchersemptyString():

@Test
public void whenStringIsEmpty_thenCorrect() {
    String first = "";
    String second = null;

    assertThat(first, emptyString());
    assertThat(first, emptyOrNullString());
    assertThat(second, emptyOrNullString());
}

5. Matchers de padrões

Também podemos verificar se um determinado texto corresponde a uma expressão regular usando a funçãomatchesPattern():

@Test
public void whenStringMatchPattern_thenCorrect() {
    String first = "hello";

    assertThat(first, matchesPattern("[a-z]+"));
}

6. Sub-String Matchers

Podemos determinar se um texto contém outro subtexto usando a funçãocontainsString() oucontainsStringIgnoringCase():

@Test
public void whenVerifyStringContains_thenCorrect() {
    String first = "hello";

    assertThat(first, containsString("lo"));
    assertThat(first, containsStringIgnoringCase("EL"));
}

Se esperarmos que as sub-strings estejam em uma ordem específica, podemos chamar o matcherstringContainsInOrder():

@Test
public void whenVerifyStringContainsInOrder_thenCorrect() {
    String first = "hello";

    assertThat(first, stringContainsInOrder("e","l","o"));
}

A seguir, vamos ver como verificar se umString começa com um determinadoString:

@Test
public void whenVerifyStringStartsWith_thenCorrect() {
    String first = "hello";

    assertThat(first, startsWith("he"));
    assertThat(first, startsWithIgnoringCase("HEL"));
}

E, finalmente, podemos verificar se umString termina com umString especificado:

@Test
public void whenVerifyStringEndsWith_thenCorrect() {
    String first = "hello";

    assertThat(first, endsWith("lo"));
    assertThat(first, endsWithIgnoringCase("LO"));
}

7. Conclusão

Neste tutorial rápido, exploramos o Hamcrest Text Matchers.

Como sempre, o código-fonte completo dos exemplos pode ser encontradoover on GitHub.