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]
Todos os elementos do array original estão no array embaralhado;
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;
}