desenvolvimento utilizando tdd filedesenvolvimento utilizando tdd objetivo demonstrar o...
TRANSCRIPT
Desenvolvimento utilizando TDD
Objetivo
Demonstrar o desenvolvimento de um método que transforma uma cadeia de caracteres
em “camel case” em uma lista de strings com as palavras usando o TDD (Test Driven
Development).
Resumo
No desenvolvimento foram criados dois métodos, um método principal e um método
auxiliar, sempre utilizando o TDD. O método converte uma string, palavras e frases, e faz
a validação impedindo a utilização de strings vazias. Não foi necessário a refatoração do
código em algumas sessões.
Desenvolvimento
• SESSÃO 1
Nessa sessão foi criado o teste, o método principal e o código que converte uma palavra simples. Pela simplicidade do código não foi preciso refatorar.
1.1 TESTE ADICIONADO
@Testpublic void testConverterNomeSimples() {
List<String> lista = new ArrayList<String>();lista.add("nome");
assertEquals(lista,ConverteCamelCase.converterCamelCase("Nome"));}
1.2 CÓDIGO ANTES DO TESTE
public class ConverteCamelCase {
public static List<String> converterCamelCase(String original){
return null;}
}
1.3 CÓDIGO DEPOIS DO TESTE
public class ConverteCamelCase {
public static List<String> converterCamelCase(String original){
List<String> lista = new ArrayList<String>();
lista.add(original).toLowerCase());
return lista;}}
1.4 REFATORAÇÃO
Código não foi alterado.
• SESSÃO 2
Nessa sessão foi criado o teste e o código para a conversão de mais de uma palavra.
2.1 TESTE ADICIONADO
@Testpublic void testNomeComposto() {
List<String> lista = new ArrayList<String>();lista.add("nome");lista.add("composto");assertEquals(lista,
ConverteCamelCase.converterCamelCase("NomeComposto"));}
2.2 CÓDIGO ANTES DO TESTE
public class ConverteCamelCase {
public static List<String> converterCamelCase(String original) {List<String> lista = new ArrayList<String>();
if (!original.isEmpty() && original.matches("\\w*")){lista.add(original).toLowerCase());
}else{System.out.println("Palavra inválida");}
return lista;}
}
2.2 CÓDIGO DEPOIS DO TESTE
public class ConverteCamelCase {
public static List<String> converterCamelCase(String original) {List<String> lista = new ArrayList<String>();StringBuilder sb = new StringBuilder(original);int x = 0;String[] palavras;String nova;char[] c = original.toCharArray();
for (int x = 0; x < original.length(); x++){
if (Character.isUpperCase(c[x]) && x != 0){sb.insert(x + count, ";");x++;
}}nova = sb.toString();palavras = nova.split(";");for (int i=0; i < palavras.length; i++){
lista.add(palavras[i]).toLowerCase();}System.out.println(lista);return lista;
}}
2.3 REFATORAÇÃO
Foi mudado o nome de algumas variáveis e excluída uma saída de texto.
public class ConverteCamelCase {
public static List<String> converterCamelCase(String original) {List<String> lista = new ArrayList<String>();StringBuilder sb = new StringBuilder(original);int count = 0;String[] palavras;String novaPalavra;char[] c = original.toCharArray();
for (int x = 0; x < original.length(); x++){if (Character.isUpperCase(c[x]) && x != 0){
sb.insert(x + count, ";");count++;
}}nova = sb.toString();palavras = nova.split(";");for (int i=0; i < palavras.length; i++){lista.add(palavras[i]).toLowerCase();}
return lista;}
}
• SESSÃO 3
Nessa sessão foi criado o teste e o método auxiliar.
3.1 TESTE ADICIONADO
@Testpublic void testSepararPalavras(){
String[] palavras = {"Nomes","Separados"};assertArrayEquals(palavras, ConverteCamelCase.separarPalavras("NomesSeparados"));
}
3.2 CÓDIGO ANTES DO TESTE
public class ConverteCamelCase {
public static List<String> converterCamelCase(String original) {List<String> lista = new ArrayList<String>();StringBuilder sb = new StringBuilder(original);int count = 0;String[] palavras;String nova;
char[] c = original.toCharArray();
for (int x = 0; x < original.length(); x++){if (Character.isUpperCase(c[x]) && x != 0){
sb.insert(x + count, ";");count++;
}}nova = sb.toString();palavras = nova.split(";");for (int i=0; i < palavras.length; i++){
lista.add(palavras[i]).toLowerCase();}
return lista;}
}
3.3 CÓDIGO DEPOIS DO TESTE
public class ConverteCamelCase {
public static List<String> converterCamelCase(String original) {List<String> lista = new ArrayList<String>();String[] palavras;
palavras = separarPalavras(original);for (int i=0; i < palavras.length; i++){
lista.add(palavras[i].toLowerCase());}
return lista;}
public static String[] separarPalavras(String original){char[] c = original.toCharArray();int count = 0;StringBuilder sb = new StringBuilder(original);
for (int x = 0; x < original.length(); x++){if (Character.isUpperCase(c[x]) && x != 0){
sb.insert(x + count, ";");count++;
}}System.out.println(sb);
return sb.toString().split(";");
}}
3.4 REFATORAÇÃO
Não houve alteração no código.
• SESSÃO 4
Nessa sessão foi criado o teste e o código que valida a entrada vazia.
4.1 TESTE ADICIONADO
@Testpublic void testValidacaoStringVazia(){
List<String> lista = new ArrayList<String>();lista.add("Palavra Inválida");assertEquals(lista, ConverteCamelCase.converterCamelCase("1nome"));
}
4.2 CÓDIGO ANTES DO TESTE
public class ConverteCamelCase {
public static List<String> converterCamelCase(String original) {List<String> lista = new ArrayList<String>();String[] palavras;palavras = separarPalavras(original);
for (int i=0; i < palavras.length; i++){lista.add(palavras[i].toLowerCase());
}return lista;}
public static String[] separarPalavras(String original){char[] c = original.toCharArray();int count = 0;StringBuilder sb = new StringBuilder(original);
for (int x = 0; x < original.length(); x++){if (Character.isUpperCase(c[x]) && x != 0){
sb.insert(x + count, ";");count++;
}}
return sb.toString().split(";");
}
4.3 CÓDIGO DEPOIS DO TESTE
public class ConverteCamelCase {
public static List<String> converterCamelCase(String original){
List<String> lista = new ArrayList<String>();String[] palavras;
if (!original.isEmpty() && original.matches("\\w*")){palavras = separarPalavras(original);for (int i=0; i < palavras.length; i++){
lista.add(palavras[i].toLowerCase());}
}else{System.out.println("Palavra inválida");}
return lista;}
public static String[] separarPalavras(String original){char[] c = original.toCharArray();int count = 0;StringBuilder sb = new StringBuilder(original);
for (int x = 0; x < original.length(); x++){if (Character.isUpperCase(c[x]) && x != 0){
sb.insert(x + count, ";");count++;
}}return sb.toString().split(";");}
}
4.4 REFATORAÇÃO
Não houve alteração no código.
5 CÓDIGO FINAL
public class ConverteCamelCase {
public static List<String> converterCamelCase(String original){
List<String> lista = new ArrayList<String>();String[] palavras;
if (!original.isEmpty() && original.matches("\\w*")){palavras = separarPalavras(original);for (int i=0; i < palavras.length; i++){
lista.add(palavras[i].toLowerCase());}
}else{System.out.println("Palavra inválida");}
return lista;}
public static String[] separarPalavras(String original){char[] c = original.toCharArray();int count = 0;StringBuilder sb = new StringBuilder(original);
for (int x = 0; x < original.length(); x++){if (Character.isUpperCase(c[x]) && x != 0){
sb.insert(x + count, ";");count++;
}}return sb.toString().split(";");}
}