Como testar que o método disparou a exceção com a mensagem correta? [Dica Rápida]

Olá, pessoal

Essa é uma dica rápida para testarmos se a mensagem retornada em uma exceção é de fato a mensagem desejada.

A forma mais popular de testarmos se uma exceção foi disparada é usarmos um assertion method específico para isso, como o exemplo com NUnit:

// fixture setup...

var ex = Assert.Throws<MyException>(() => sut.DoSomething());
Assert.AreEqual("invalid operation", ex.Message);

Continue lendo »

Workshop: TDD e testes de unidade de forma profissional

Pessoal,

Acabo de publicar a página para inscrições para meu workshop: “TDD e testes de unidade de forma profissional”. Venha aprender os principais conceitos sobre testes de unidade e TDD com alguém que realmente tem experiência prática no assunto. (Obs.: workshop PRESENCIAL, a ser realizado em Campo Grande/MS.)

Corre lá que são apenas 8 vagas! Para mais informações, clique na imagem abaixo:

arte_topo_paginaVejo vocês lá!

Deixando seus testes mais legíveis e robustos

É muito comum, ao iniciar com a escrita de testes automatizados, não tomarmos certas precauções, fazendo com que a leitura e a manutenção dos mesmos se tornem um pesadelo. Acabamos vendo testes falhando (sequer compilando) devido a modificações na base de código de produção que não tem nenhuma relação com a regra coberta pelo teste quebrado. Isso acaba deixando a manutenção dos testes extremamente chata e trabalhosa.

Neste artigo, trago algumas dicas úteis para que possamos construir e manter uma suíte de testes de forma mais “saudável”. Embora o foco esteja em testes de unidade, a ideia central pode ser usada em testes integrados também.

Vamos lá! Continue lendo »

FluentBuilder – Meu primeiro pacote Nuget

Olá, pessoal

No começo da semana publiquei no Nuget meu primeiro pacote: FluentBuilder.

O propósito dessa lib é facilitar nossa vida, evitando que tenhamos que criar manualmente um Builder para cada objeto que iremos testar em nossa suite de testes.

Um exemplo básico de uso seria o seguinte:

var novoEndereco = FluentBuilder<Endereco>
                 .New()
                 .With(endereco => endereco.Logradouro, "Av. Afonso Pena")
                 .With(endereco => endereco.Bairro, "Centro")
                 .Build();

Continue lendo »

Comparando objetos semanticamente

Olá, galera

Preparei para este post a demonstração de uma biblioteca que descobri durante o curso Advanced Unit Testing da PluralSight.

Ela é responsável por facilitar a comparação entre objetos, mesmo que estes sejam de diferentes tipos. Mostrarei como seu uso pode ser útil para simplificarmos os asserts de nossos testes de unidade.

Vamos então ao que interessa!

COMPARAÇÃO SEMÂNTICA

Existem objetos dentro de um software que, mesmo sendo de tipos diferentes, são semanticamente similares. Continue lendo »