Blog do TaQ

YAML e fixtures no Java, a vingança

Publicado em Developer

Depois que eu brinquei um pouco com fixtures no Java, como mostra o post anterior, eu tive alguns problemas em relação à uma das libs utilizadas, e apesar de ter alertado o desenvolvedor sobre uma lentidão aparente no carregamento de um arquivo com dezenas de registros, não pude esperar por uma resposta e nem fuçar um pouco mais no código do bicho.

Foi mais rápido eu fazer uma solução do zero para resolver o meu problema, e como acontece com esses tipos de coisa, já liberei o código para quem precisar usar também.

Criei o projeto JTT - Java Table Test em poucas horas programando que já resolveram o problema. Para quem precisar, está aí o bicho, e se alguém tiver alguma idéia, ou melhoria no código, é só mandar um pull request ali pelo Github.

Aqui vai um exemplo simples de como fica um teste usando JUnit e o JTT (eita nominho sem inspiração):

 1 import com.eustaquiorangel.jtabletest.*;
 2 import java.sql.*;
 3 import java.util.*;
 4 import junit.framework.*;
 5 
 6 public class SimpleJunitTest extends TestCase {
 7 
 8    public void testBeatles() throws Exception {
 9       JTableTest jt = new JTableTest("data.yml","sqlite");
10       Query query;
11 
12       jt.clean("customers");
13 
14       // test fixture
15       Map customers = jt.fixture("customers.yml");
16       Map john    = (Map) customers.get("john");
17       Map george  = (Map) customers.get("george");
18       assertEquals(john.get("name"),"John Lennon");
19 
20       // test row count
21       query = jt.table("customers");
22       assertTrue(query.count()==4);
23 
24       // test row count with conditions
25       query = jt.table("customers").where("name like '%n'");
26       assertTrue(query.count()==2);
27       assertEquals(query.column("name"),george.get("name"));
28 
29       // test row count with conditions and order
30       query = jt.table("customers").where("name like '%n'").order("name desc");
31       assertTrue(query.count()==2);
32       assertEquals(query.column("name"),john.get("name"));
33    }
34 }
35 

Dá para basear um mais completo no exemplo do post anterior, usando a ferramenta nova. Achei até meio surreal, depois de uns 10 anos trabalhando com Java, fiz um projeto de Software Livre com ele apenas agora. Fazer o que, ainda tenho que usar o bicho. :-)


Tags:


Comentários

comments powered by Disqus

Twitter