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;
}
}
}
Tdd
A
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
2 Respostas
Você pode testar se:
- 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.
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 pfclass 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; } } }
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: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"));
}
}
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;
}
}
Criado 16 de fevereiro de 2011
Ultima resposta 16 de fev. de 2011
Respostas 2
Participantes 3