sábado, 7 de julho de 2012

Aplicando testes unitários no visual Studio 2010

Test Driven Development (TDD) ou em português Desenvolvimento dirigido por testes é uma técnica de desenvolvimento de software que basea em um ciclo curto de repetições: Primeiramente o desenvolvedor escreve um caso de teste automatizado que define uma melhoria desejada ou uma nova funcionalidade. Então, é produzido código que possa ser validado pelo teste para posteriormente o código ser refatorado para um código sob padrões aceitáveis. Fonte: Wikipedia


Bom, não vou entrar em detalhes no conceito de TDD, pretendo mostrar a utilização e criação de testes unitários no visual Studio a partir de suas classes.
Utilizando o exemplo que postei anteriormente, Produtividade-com-adonet-entity e Produtividade-com-adonet-entity (parte 2) , vamos lá..
 
Primeiramente, vamos criar um novo projeto no visual Studio 2010, do tipo Class Library, com o nome de Exemplo02.Empacotadores esse projeto será responsável por nos fornecer um objeto válido para utilização nos testes, assim sempre que precisarmos de um objeto válido utilizaremos sempre os empacotadores. 

Projeto criado, agora criaremos uma classe chamada EmpacotadoresCadastro.cs conforme a imagem abaixo:



Acima, vejam o exemplo do EmpacotadorPessoa, ou seja, sempre que precisarmos de um objeto pessoa válido nos testes, utilizaremos o EmpacotadorPessoa(); o mesmo faremos para cada teste que criarmos.
Próximo passo entao, é criarmos o projeto de teste. Vamos criar entao um projeto do tipo TestProject.


Abaixo criei os testes de Inclusão, Alteração e Exclusão da classe Pessoa().

namespace Exemplo02.Testes
{
    [TestClass]
    public class TestesGerais
    {
      
        public DatabaseOneContext ctx;
      
        public TestesGerais()
        {
            if (this.ctx == null)
            {
                ctx = new DatabaseOneContext();
            }
        }         
        [TestMethod]
        public void IncluindoUmaPessoa()
        {
            ctx.PessoaSets.Add(Empacotadores.EmpacotadoresCadastro.EmpacotadorPessoa());
            ctx.SaveChanges();
            Assert.IsTrue(ctx.PessoaSets.Count() > 0);
        }

        [TestMethod]
        public void AlterarUmaPessoa()
        {
            ctx.PessoaSets.Add(Empacotadores.EmpacotadoresCadastro.EmpacotadorPessoa());
            ctx.SaveChanges();
          
            ctx.PessoaSets.Where(x => x.Id == ctx.PessoaSets.Max(y =>          y.Id)).FirstOrDefault().Nome="Alterado...";          
            ctx.SaveChanges();

        }

        [TestMethod]
        public void ExcluirTodasAsPessoas()
        {
            ctx.PessoaSets.Add(Empacotadores.EmpacotadoresCadastro.EmpacotadorPessoa());
            ctx.SaveChanges();

            ctx.PessoaSets.Add(Empacotadores.EmpacotadoresCadastro.EmpacotadorPessoa());
            ctx.SaveChanges();


            foreach (var item in ctx.PessoaSets)
            {
                ctx.PessoaSets.Remove(item);

            }

            Assert.IsTrue(ctx.SaveChanges() > 0);

        }
      
    }
}



Nenhum comentário:

Postar um comentário