Fluent Assertion: Melhorando a leitura dos Testes Unitários

19 set

Fala Galera,

Hoje estarei falando como podemos melhorar a leitura do nossos testes de unidade. Ao criamos teste de unidade (Unit Tests), quando criamos diversos “Asserts” nada mais chato que quando falha um teste e a sua mensagem de falha geralmente não é uma mensagem clara e não ajuda muito em identificar o problema.

E existe outros problemas, caso seu teste de unidade tenha mais de uma condição e umas dessas condições falhe e Framework de testes como mstests não vai nem verificar as outras condições e simplesmente ignorar-lás, isso pode ser um problema quando queremos criar múltiplas condições de testes. E é ai que entra o Fluent Assertions.

O que é Fluent Assertions

Fluent Assertions é uma serie de métodos extensível que ajuda nós desenvolvedores a especificar testes muito mais naturalmente, de fácil leitura e no estilo BDD ou TDD.

Para usar o Fluent Assertions, devemos instalar o seu pacote através do NuGet

Show me the Code

Para verificar o conteúdo de uma string

string actual = "ABCDEFGHI";
actual.Should().StartWith("AB").And.EndWith("HI").And.Contain("EF").And.HaveLength(9);

Para verificar uma coleção

IEnumerable collection = new[] { 1, 2, 3 };
collection.Should().HaveCount(3, "Coleção deve conter 3 itens"))

 

Para verificar objetos 

object obj = null;
obj.Should().NotBeNull().And.Should.BeOfType<string>("Objeto deve ser to tipo string");

Para verificar tipo Booleanos

var isValid = true;
isValid .Should().BeTrue();
isValid.Should().Be(otherBoolean);

Para verificar tipos inteiros, floats e outros numéricos

int theInt = 5;
theInt.Should().BeGreaterOrEqualTo(5);
theInt.Should().BeGreaterOrEqualTo(3);
theInt.Should().BeGreaterThan(4);     
theInt.Should().BeLessOrEqualTo(5);
theInt.Should().BeLessThan(6);
theInt.Should().BePositive();
theInt.Should().Be(5);
theInt.Should().NotBe(10);
theInt.Should().BeInRange(1,10);

 

Para verificar métodos que podem estourar exceções

Action act = () => subject.Foo(null));

act.ShouldThrow<ArgumentNullException>()
 .And.ParamName.Should().Equal("message");

 

Integrações com framework de tests

O Fluent Assertions se integra a uma gama de framework de testes no qual podemos destacar

Usando o Fluent Assertions podemos melhorar em muito a leitura do nossos testes unitários, fazendo que coisas que requer mais código como verificar um item dentro de uma coleção se torna muito mais fácil com essa biblioteca.

Alguns exemplos foram tirados da própria documentação do Fluent Assertions, caso queira saber mais clique aqui

Abs e até a próxima

4 Replies to “Fluent Assertion: Melhorando a leitura dos Testes Unitários

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *