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:
2 – No Solution Explorer no projeto DATesteUnitarioTest adicione uma referencia ao projeto DATesteUnitario:
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:
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:
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);
}
}
}





