Posts Tagged 'NUnit'

Rollback automático com NUnit

A situação é comum: você constrói um conjunto de testes unitários baseado em registros que estão salvos em um banco de dados e tudo funciona bem. O problema é que assim que os dados são alterados/apagados/inseridos pelo primeiro ciclo de testes, seus Asserts simplesmente deixam de funcionar – e você precisa de alguma maneira voltar a base ao seu estado original.

Bom, antes de qualquer coisa vamos deixar algo claro: provavelmente você não devesse estar dependendo de um banco de dados. Se você estiver testando sua camada de domínio, o ideal é que suas suas classes de controle consumam uma interface de suas classes DAO cuja dependência tenha sido injetada. Isto permitirá que você construa stubs de suas classes de acesso a dados, garantindo que seus testes rodarão rapidamente (e que você sempre tenha coragem para rodá-los!) e não dependam de um banco de dados para serem rodados.

Mas suponhamos que você tenha uma razão muito forte para querer depender de um banco de dados. Você pode estar testando a camada de acesso a dados em si, stressar seu database através de testes unitários ou simplesmente já possuir um conjunto muito grande de testes prontos que desencorajam o refactor (não é algo que você deva se orgulhar, mas coisas assim acontecem). Em qualquer um desses casos, você tem algumas opções:

  1. Escrever seus testes para que eles sejam auto-suficientes: uma boa prática, seguindo a “metodologia” AAA de testes unitários: Arrange, Act, Assert. Para alguns casos (com muitos registros envolvidos), entretanto, isto pode ser bastante trabalhoso (e demorado);
  2. Criar um backup da base que você roda os testes e restaurá-lo constantemente: menos trabalhoso, mas longe do ideal. Mesmo automatizando o restore via código trabalho adicional associado sempre que os dados fossem efetivamente alterados (para adição de novos testes, por exemplo);
  3. Recarregar os dados do database a partir de XML, DBF ou algo que o valha: uma opção legal e até bem difundida. Arquivos XML ou de qualquer outro tipo, entretanto, não são minha representação ideal de dados relacionais;
  4. E por último, é claro, a opção que falaremos aqui: utilizar o XtUnit, framework desenvolvido pelo Roy Osherove (uma espécie de bam-bam-bam dos testes unitários) que permite um rollback nos seus dados com um simples attribute de [DataRollBack].

Continue lendo o post completo..

Anúncios

Testes Unitários com NUnit

Fala pessoal!

As coisas têm estado bastante corridas nas últimas semanas, motivo pelo qual terminei o mês de abril com o impressionante número de 1 post. Mas em maio o objetivo é mudar isso: no mínimo 2, :)..

Nas últimas semanas tenho lido bastante sobre testes unitários, inversão de controle (e injeção de dependência), princípios SOLID e algumas outras práticas defendidas pela comunidade ALT.NET.

Apesar de testes unitários já serem tópico de atenção há muito tempo e eu ter uma clara noção de como eles funcionavam, tenho que admitir que nunca os havia utilizado na prática. Como um post do Karl Seguin, via CodeBetter, nesta semana falou do assunto também e alguns projetos na empresa seriam bastante beneficiados, pensei: é hora de dar uma pesquisada e de quebra tirar a poeira do blog!

Pra demonstrar um projeto com testes unitários básicos eu vou utilizar o NUnit. O VS2008, na edição Team System, também pode fazer testes unitários, mas minha escolha baseia-se no fato de eu não apoiar o recorrente comportamento “anti open frameworks” da MS. Além do custo do VS ser absurdo, eu realmente gostaria de poder participar de uma comunidade cada vez mais ativa sem depender da MS pra tudo. Nesse quesito é indiscutível a superioridade do Java (na verdade de sua comunidade) sobre o .NET, e pra mim grande parte desta culpa pertence à MS..

Continue lendo o post completo


Perfil

Olá! Meu nome é José Filipe e sou o autor deste blog. Trabalho como Gerente de Desenvolvimento da todo! BPO, onde sou responsável pela manutenção e evolução de pessoas, processos e sistemas desenvolvidos em diferentes tecnologias. Atualmente curso uma especialização em Engenharia de Software pela PUCPR, em Curitiba, mas moro em Florianópolis, onde me graduei em Sistemas de Informação pela UFSC. Possuo o título de MCP e com base nas experiências do dia-a-dia espero trazer ao blog assuntos interessantes sobre arquitetura e desenvolvimento .NET..

Arquivos

Páginas

novembro 2017
S T Q Q S S D
« jun    
 12345
6789101112
13141516171819
20212223242526
27282930