ncrunchTitle

Facilitando TDD com NCrunch 1


TDD é uma prática extremamente aconselhada, apesar de se chamar Test Driven Development, o real objetivo dele é proporcionar um melhor design de código, se acompanhado de KISS, Yagni trará grande facilidade em manter e entender o código desenvolvido. É claro que também ele nos proporciona rastreabilidade em nosso código quando temos uma boa cobertura.

TDD sem NCrunch

Antes de conhecer o NCrunch eu tinha trés opções para rodar meus testes, quando usava o MSTest eu usava o nativo do Visual Studio, quando usava NUnit eu usava ou o ReSharper ou o TestDriven para verificar se meus testes estavam passando. Nesse exemplo vou usar MS Test para facilitar a demonstração.

Primeiro passo é cria a solução, adicionei dois projeto, um do tipo Class Library e outro Test Project

Figura 1: Estrutura do projeto.

Crie a classe DadoUmCalculadora em meu teste, com o seguinte código:

[csharp]using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace TDDWithNCrunch.Test
{
[TestClass]
public class DadoUmCalculadora
{
[TestMethod]
public void PossoEfetuarASomaDeDoisNumeros()
{
var calculadora = new Calculadora();
int resultado = calculadora.Soma(2, 2);
Assert.AreEqual(4, resultado);
}
}
}[/csharp]

E aqui a classe Calculadora no projeto TDDWithNCrunch:

namespace TDDWithNCrunch
{
    public class Calculadora
    {
        public int Soma(int a, int b)
        {
            return a + b;
        }
    }
}

Nada muito complicado, afinal esse não é o intuito do artigo.

Para testar é só clicar no segundo botão da esquerda para direita, ou usar o atalho CTRL + R + T:

Figura 2: Barra de botões do Visual Studio


E ai veremos que nosso teste passou!

Figura 3: Testes passando

Nada muito complicado, mas podemos melhorar isso com o NCrunch.

TDD com NCrunch

Primeira passo é instalar o NCrunch que tem versões para Visual Studio 2008, 2010 e 11. Para baixar é so acessar esse link: http://www.ncrunch.net/download.htm

A instalação é simples, next, next, next e finish. Apos instalar, se seu Visual Studio estiver aberto, reinicie ele.

Ao reiniciar o Visual Studio você vai ver que um novo item de menu foi criado, NCrunch como mostra a imagem abaixo:

Figura 4: Barra de menu

Agora devemos configurar o NCrunch, para isso clique em NCrunch -> Enable NCrunch e siga os passos a seguir:

Figura 5: Primeiro passo

Precione Next

segundo passo

Figura 6: Segundo passo

Vamos selecionar a segunda opção para ele rodar os testes de forma paralela

terceiro passo

Figura 7: Terceiro passo

Selecione a primeira opção para que ele possa rodar todos os test quando for detectada qualquer mudança no código.

quarto passo

Figura 8: Quarto passo

Selecione a segunda opção para que ele rode todos os testes por padrão, a primeira opção é util quando temos muitos projetos que queremos limitar quais testes serão rodados continuamente, o que não é o nosso caso.

fim

Figura 9: Ultimo passo

Por fim termina a instalação, e agora nosso testes já vão ser rodados automaticamente.

São adicionado indicadores de estado no editor de código, veja:

indicadores de codigo

Figura 10: Indicadores de código passando

indicadores de falha

Figura 11: Indicadores de código falhando

E também temos uma janela onde mostram por padrão os testes que estão falhando, alem de ter outras opções, veja:

Testes falhando

Figura 12: Janela mostrando os testes falhando

barra lateral

Figura 13: Janela sem resultado, devido a todos os testes passarem

Quando a bolinha ficar com a cor em preto isso indica que aquela linha não está sendo coberta pelo teste.

Por final veja como ele funciona em tempo real:

Figura 14: Funcionamento em tempo real

Como podemos ver NCrunch facilita e muito a prática de TDD, com os testes rodando sem precisar clicar em nenhum botão ou usar algum atalho, podemos facilmente mudar a implementação de um código nosso e ver se ele está falhando em tempo real!

Para saber mais:
Sobre NCrunch
Documentação do NCrunch


sobre Alberto Monteiro

Desenvolvedor no Grupo Fortes, cuja principal área de conhecimento são em tecnologias Microsoft, como Windows Forms / Services, WPF, ASP.NET(MVC/WEB API), Windows Phone, EF. Gosta de sopa de letrinhas(SOLID, DDD, TDD, BDD, IoC, SoC, UoW), possui aplicações de Windows Phone publicadas no marketplace, já contribuiu no jQuery UI. Atualmente trabalha com ASP.NET MVC / Web API, Windows Azure, Amazon AWS, jQuery/UI, Knockout, EF, Ninject, AutoMapper, Restfulie, SignalR, KendoUI.

  • Daniel Oliveira

    Excelente post, vou testar o NCrunch!