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!
Comments
1 Comment
[…] 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