Tdd

Tem como escrever esse programinha usando a técnica TDD?
Como ele embaralha a lista eu não sei se seria possível.
Se alguém souber como fazer me mostra pf

[code]
class Program
{
static void Main(string[] args)
{

        // vamos criar um ArrayList de inteiros
        ArrayList valores = new ArrayList();
        valores.Add("joao");
        valores.Add("maria");
        valores.Add("pessoa");
        valores.Add("computador");
        valores.Add("maquina");
        valores.Add("tempo");
        valores.Add("teste");
        valores.Add("papelaria");
        valores.Add("borracha");
        valores.Add("papel");

        // vamos embaralhar a ordem dos elementos
        embaralhar(valores);

        // vamos ver o resultado
        
             {
               Console.Write("{0}  ", valores[1]);
             }
        
       
        Console.ReadKey();
    }

    // método que embaralha a ordem dos elementos do
    // ArrayList
    static void embaralhar(ArrayList lista)
    {
        // cria um objeto da classe Random
        Random rnd = new Random();

        // vamos embaralhar o ArrayList
        for (int i = 0; i < lista.Count; i++)
        {
            int a = rnd.Next(lista.Count);
            object temp = lista[i];
            lista[i] = lista[a];
            lista[a] = temp;
        }
    }
}[/code]

Você pode testar se:

  1. Todos os elementos do array original estão no array embaralhado;
  2. Pelo menos um ou dois elementos está numa ordem diferente;

Se isso é C#, use o Microsoft Test Framework para realizar o teste.
Desde que foi lançado, ele substituiu o NUnit, com a vantagem de já ser integrado ao Visual.

Outra possibilidade é criar um Mock da classe Random, e fazer um gerador que não seja aleatório para o teste.

[quote=acerola]Tem como escrever esse programinha usando a técnica TDD?
Como ele embaralha a lista eu não sei se seria possível.
Se alguém souber como fazer me mostra pf

 class Program
    {
        static void Main(string[] args)
        {
            
            

            // vamos criar um ArrayList de inteiros
            ArrayList valores = new ArrayList();
            valores.Add("joao");
            valores.Add("maria");
            valores.Add("pessoa");
            valores.Add("computador");
            valores.Add("maquina");
            valores.Add("tempo");
            valores.Add("teste");
            valores.Add("papelaria");
            valores.Add("borracha");
            valores.Add("papel");

            // vamos embaralhar a ordem dos elementos
            embaralhar(valores);

            // vamos ver o resultado
            
                 {
                   Console.Write("{0}  ", valores[1]);
                 }
            
           
            Console.ReadKey();
        }

        // método que embaralha a ordem dos elementos do
        // ArrayList
        static void embaralhar(ArrayList lista)
        {
            // cria um objeto da classe Random
            Random rnd = new Random();

            // vamos embaralhar o ArrayList
            for (int i = 0; i < lista.Count; i++)
            {
                int a = rnd.Next(lista.Count);
                object temp = lista[i];
                lista[i] = lista[a];
                lista[a] = temp;
            }
        }
    }[/code][/quote]


Na verdade vc vai ter q criar um método: deveriaEmbaralhar(parametro) e fazer um assertEquals com um retorno esperado, a primeira vez sem implementar nda, gera barra vermelha dai vc vai implementando e testando, no caso aí vc fez 1 classe com o main, no teste esse método estaria numa classe e o metodo de teste com um JUnit pra testar =)

Exemplo:

Classe Teste:
[code]import junit.framework.TestCase;
import br.com.cb.jUnitTes2.StringUtil;

public class StringUtilTest extends TestCase{


	public void testRecuperaNomeAtributoNaoPodeSerNulo() throws Exception{
		assertEquals("nome", StringUtil.recuperaNomeAtributo("nome"));
		
	}
	
	public void testRecuperaNomeAtributoNaoPodeSerVazio()throws Exception{
		assertEquals("XPTO", StringUtil.recuperaNomeAtributoNaoPodeSerVazio("XPTO"));
		
	}
	
	public void testRecuperaNomeAtributoNaoPodeSerMenorQue4()throws Exception{
		assertEquals("Abcd", StringUtil.recuperaNomeAtributoNaoPodeSerMenorQue4("Abcd"));
	}
	
	public void testRecuperaNomeAtributoNaoPodeTerLetraMaiuscula()throws Exception{
		assertEquals("teste funfando", StringUtil.recuperaNomeAtributoNaoPodeTerLetraMaiuscula("teste funfando"));
	}
}

Classe a ser testada:

[code]package br.com.cb.jUnitTes2;
public class StringUtil {
public static String recuperaNomeAtributo(String nomeMetodo){
if(nomeMetodo==null) throw new IllegalArgumentException(“Agurmento não pode ser nulo”);
return nomeMetodo;
}

public static String recuperaNomeAtributoNaoPodeSerVazio(String nomeMetodo){
	if(nomeMetodo.equals("")) throw new IllegalArgumentException("Agurmento não pode ser vazio");
	return nomeMetodo;
}

public static String recuperaNomeAtributoNaoPodeSerMenorQue4(String nomeMetodo){
	if(nomeMetodo.length()<4) throw new IllegalArgumentException("Agurmento não pode ser menor do que 4 caracteres");
	return nomeMetodo;
}

public static String recuperaNomeAtributoNaoPodeTerLetraMaiuscula(String nomeMetodo){
	String maiuscula="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
		   for(int i=0; i<nomeMetodo.length(); i++){
		      if (maiuscula.indexOf(nomeMetodo.charAt(i),0)!=-1){
		    	  throw new IllegalArgumentException("Agurmento não pode ser nulo");
		      }
		   }
		   return nomeMetodo;
}

}[/code]