Press enter to see results or esc to cancel.

Drops de testes – Tipos de asserção

Estamos fazendo uma série de artigos sobre testes do básico ao avançado com posts todas as terças, você pode ver todos os posts clicando aqui ou ver o post anterior clicando aqui.

A Asserção é uma das partes que compõe o teste automatizado e é nela que checamos se o resultado recebido é o esperado ou se a execução ocorreu da forma correta.

É nesta etapa que você vai checar, por exemplo, se o cálculo foi feito corretamente, se o conteúdo foi adicionado, se a execução gerou ou não uma exceção (sim, é possível ter testes de exceção).

Neste post, vamos falar dos tipos de asserção mais usados no dia a dia e que não requerem nenhuma configuração adicional.

Asserção

A asserção é a comparação do resultado esperado com o resultado obtido pela execução do teste. Se o resultado retornado pelo seu código for igual ao que você está esperando, a asserção será verdadeira e seu teste irá passar. Caso contrario, seu teste irá falhar e o framework de teste (em sua maioria) irá exibir uma mensagem dizendo o que era esperado e o que foi obtido.

Vale ressaltar que neste exemplos estamos utilizando o framework de testes NUnit e a linguagem .NET

Asserções de igualdade

Nesta asserção vamos checar se o resultado recebido pela execução é o mesmo, ou não, do que estamos esperando, checando de fato o valor retornado no objeto.

Vamos ver alguns exemplos:

[Test]
public void DeveRetornarOModeloDoCarroEsperado()
{
    //Arrange
    var minhaClasse = new MinhaClasse();

    //Act
    var resultado = minhaClasse.ObterCarro();

    //Assert
    Assert.AreEqual(resultado, "corsa");
}

No exemplo acima estamos verificando que o resultado obtido pela execução do método ObterCarros() é a string “corsa”

Nós também podemos checar se são diferentes, veja abaixo:

[Test]
public void DeveRetornarOModeloDoCarroEsperado()
{
    //Arrange
    var minhaClasse = new MinhaClasse();

    //Act
    var resultado = minhaClasse.ObterCarro();

    //Assert
    Assert.AreNotEqual(resultado, "ferrari");
}

Asserções condicionais

Neste tipo de asserção vamos verificar se o resultado obtido pela execução do código fonte atende ou não a uma condição esperada. Aqui podemos checar se um objeto contém um valor, se está nulo ou vazio, se o resultado retornado é booleano igual ao esperado, e outros.

No exemplo abaixo, vamos checar se o objeto retornado pelo método ObterCarros() é um objeto vazio:

[Test]
public void DeveRetornarCarroPorIdInformado()
{
    //Arrange
    var minhaClasse = new MinhaClasse();

    //Act
    var resultado = minhaClasse.ObterCarroPorId("chevrolet");

    //Assert
    Assert.IsEmpty(resultado);
}

No exemplo abaixo, vamos checar se o valor retornado pelo método CarroHatch() é verdadeiro:

[Test]
public void DeveRetornarVerdadeiroSeOTipoDoCarroForIgualAoInformado()
{
    //Arrange
    var minhaClasse = new MinhaClasse();

    //Act
    var resultado = minhaClasse.CarroHatch("corsa");

    //Assert
    Assert.IsTrue(resultado);
}

Asserções de coleção

Este tipo de asserção é utilizado para validações de coleções. Você pode checar se uma lista é equivaliente a outra, se possui itens ou se possui um item específico ou não, entre outros.

No exemplo abaixo, vamos checar se a lista retornada pelo método ObterCarros() possui o valor corsa, veja:

[Test]
public void ListaDeCarrosRetornadaDeveConterCorsa()
{
    //Arrange
    var minhaClasse = new MinhaClasse();

    //Act
    var resultado = minhaClasse.ObterCarros();

    //Assert
    CollectionAssert.Contains("corsa", resultado);
}

Abaixo um exemplo em que verificamos se a lista retornada pelo método ObterCarros() é equivalente a uma lista que criamos no nosso teste como resultado esperado:

[Test]
public void DeveRetornarListaDeCarrosEsperada()
{
    //Arrange
    var minhaClasse = new MinhaClasse();
    var resultadoEsperado = new List { "corsa" };

    //Act
    var resultado = minhaClasse.ObterCarros();

    //Assert
    CollectionAssert.AreEquivalent(resultadoEsperado, resultado);
}

Asserções de exceção

Podemos verificar se um método irá gerar uma exceção e seu tipo.

Veja o exemplo abaixo:

[Test]
public void DeveRetornarOModeloDoCarroEsperado()
{
    //Arrange
    var minhaClasse = new MinhaClasse();

    // Act e Assert
    Assert.Throws<IndexOutOfRangeException>(() => minhaClasse.ObterCarros());
}

Também é possível validar que o método não irá gerar exceção, veja abaixo:

[Test]
public void DeveRetornarOModeloDoCarroEsperado()
{
    //Arrange
    var minhaClasse = new MinhaClasse();

    // Act e Assert
    Assert.DoesNotThrow(() => minhaClasse.ObterCarros());
}

Espero que estes tipos de asserção possam te ajudar na sua jornada de testes automatizados! Qualquer dúvida deixe nos comentários!

Nos vemos na próxima terça!

Tweet about this on TwitterShare on FacebookShare on LinkedInEmail this to someone
Comments

1 Comment

Drops de testes - Caso de teste - High5Devs

[…] Estamos fazendo uma série de artigos sobre testes do básico ao avançado com posts todas as terças, você pode ver todos os posts clicando aqui ou ver o post anterior clicando aqui. […]


Leave a Comment