Visual Studio Test Framework for Managed Code – Testes Unitários – C#

Publicado: 27 de novembro de 2014 em C#

A maioria das metodologias disponíveis para o desenvolvimento de software e gerenciamento de projetos incluem como pratica básica essencial o desenvolvimento e execução de testes unitários para que um projeto de desenvolvimento possa passar para próxima fase.

Uma boa execução de um projeto bem elaborado em diversas metodologias utilizam ambientes e exigem que os testes unitários sejam executados no ambiente de desenvolvimento (DEV) utilizando uma ferramenta para este proposito e reexecutados por consultores  funcionais/testadores, na fase de testes unitários no ambiente real de qualidade (QAS) para que só então possam executar a fase de testes integrados antes de aprovarem e homologarem o software para utilização em um ambiente produtivo (PRD).

O teste unitário executado do ponto de vista do setor de qualidade (QAS) é feito validando todas as partes dos software, incluindo, design intuitivo, usabilidade, teclas de atalho, layouts, grafia, links e etc. É claro que existem algumas diferenças sutis entre metodologias, como um ou outro procedimento ou diferentes nomenclaturas mas no final todas possuem o mesmo proposito, um software de qualidade, livre de erros e dentro do orçamento inicial do projeto. Bem! No mundo real, não importa qual a metodologia escolhida, isto nem sempre é possível.

Microsoft Unit Test Framework for Managed Code

O framework de testes de unidade da Microsoft para código gerenciado é instalado com o Visual Studio e fornece um framework para testar o código .NET. As ferramentas de teste de unidade do Visual Studio foram desenvolvidas para oferecer suporte a desenvolvedores e equipes que incorporam testes unitários em suas práticas de desenvolvimento de software.  Testes de unidade proporcionam aos desenvolvedores e testadores uma maneira rápida para procurar erros de lógica nos métodos de classes em soluções .NET.

Unit Test Framework: http://msdn.microsoft.com/pt-br/library/dd264975.aspx

Executando Testes Unitários no Visual Studio

1 – Crie uma solução C# para o console chamada DATesteUnitario, renomeie o arquivo da classe gerado automaticamente de acordo com a classe do código Participante encontrado logo abaixo. Crie um novo projeto C# para teste chamado DATesteUnitarioTest nesta mesma solução:

Projeto - Test - C#

Projeto – Test – C#

2 – No Solution Explorer no projeto DATesteUnitarioTest adicione uma referencia ao projeto DATesteUnitario:

Adicionar Referencia

Adicionar Referencia

3 – Renomeie a classe criada automaticamente para o projeto de testes para ParticipanteTeste e utilize os métodos do código abaixo, atente-se aos comentários do código fonte para saber mais detalhes sobre os padrões de teste nos objetos C# no Visual Studio.

  • Para efetuar um teste com erros, modifique os valores alimentados na propriedade nome e idade nos métodos de teste.
  • Para rodar o teste, clique no menu Test e escolha a opção All Tests, o Visual Studio irá abrir uma janela chamada Test Explorer onde será exibido o resultado do teste de seus métodos:
Testes com Erros

Testes com Erros

4 – Retorne os valores das propriedades como no código abaixo, selecione os dois métodos com erros na janela Test Explorer e com o botão direito escolha a opção Run Selected Tests:

Testes bem Sucedidos

Testes bem Sucedidos

 

Exemplo:

Neste exemplo criamos uma simples classe com propriedades Get e Set e uma classe de caso de teste para efetuar um teste unitário nos métodos criados.

C#

Classe – Participante

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DATesteUnitario
{
    public class Participante
    {
        // Atributos da classe
        private string nome;
        private int idade;

        // Propriedades
        public string Nome {
            get
            {
                return nome;
            }
            set
            {
                 nome = value;
            }
        }

        public int Idade {
            get
            {
                return idade;
            }
            set
            {
               idade = value;
               // Troque a linha acima por: value = idade;
               // funciona na sintaxe mas não passa no teste unitário
               // pois é erro básico de logica e pode ser escrito em
               // um momento de desatenção.
            }
        }

        static void Main(string[] args)
        {
            // Testa classe
            // Dumb Code - Sem efeito para o teste
            Participante participante = new Participante();

            participante.Idade = 20;
            participante.Nome = "João da Silva";

            Console.ReadKey();
        }

    }
}

JUnit Test Case – ParticipanteTeste

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using DATesteUnitario; // Namespace do projeto a ser testado

namespace DATesteUnitarioTest
{
    [TestClass]
    public class ParticipanteTeste
    {
        /*          
         * Você pode optar por utilizar métodos Getter e Setter como Java (Bean).
         * Entretanto na linguagem C# métodos Getter e Setter são substituidos por
         * propriedades semelhantes a linguagem de programação Object Pascal (Delphi).
         *
         * O conceito de testes unitários é utilizado sempre através de métodos Setter (Voids)
         * pois o mesmo já testa o método de retorno Getter no momento da comparação.
         * Os métodos testados são os Construtores da classe, métodos Setter ou
         * outros métodos da classes de sua preferencia.
         *
         * O Caso de teste unitário do Projeto de Test C# é bem parecido com o JUnit para Java
         * utilizando o conceito de Assert e possui os seguintes requisitos:
         *
         * O método deve ser decorado com o atributo [TestMethod].
         * O método deve retornar void.
         * O método não pode ter parâmetros.
         *
         * Como testar um básico Pattern de Objeto C#
         * baseados em Get e Set (propriedades em C#)
         * utilizando voids?
         *
         * Podemos utilizar métodos semelhantes ao JUnit do Java, mas atente-se
         * pois diferentemente do JUnit a classe de teste não está fisicamente ligada
         * a classe a ser testada e utiliza uma void padrão.
         *
         * Método de teste padrão:

        [TestMethod]
        public void TestMethod1()
        {
        }

        */

        //Testando propriedades
         [TestMethod]
        public void Nome()
        {
             // Testa propriedade Nome
             Participante p1 = new Participante();
             p1.Nome = "Nome";
             Assert.AreEqual("Nome", p1.Nome);

        }

        [TestMethod]
        public void Idade()
         {
             // Testa propriedade Idade
             Participante p2 = new Participante();
             p2.Idade = 20;
             Assert.AreEqual(20, p2.Idade);
         }

    }
}
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s