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
Muito bom!
Muito obrigado pela visita!
Abs
Ajudou bastante
Obrigado!
Abs.,