48
TESTE DE INTEGRAÇÃO @wbotelhos | wbotelhos.com.br | #CafeComJava WASHINGTON BOTELHO jIntegrity

Teste de Integração com DbUnit e jIntegrity

Embed Size (px)

DESCRIPTION

Teste de Integração com DbUnit e jIntegrity

Citation preview

Page 1: Teste de Integração com DbUnit e jIntegrity

TESTE DE INTEGRAÇÃO

@wbotelhos | wbotelhos.com.br | #CafeComJava

WASHINGTON BOTELHO

jIntegrity

Page 2: Teste de Integração com DbUnit e jIntegrity

Por que testar?

Page 3: Teste de Integração com DbUnit e jIntegrity

Por que testar?

Para garantir o funcionamento do código.

Page 4: Teste de Integração com DbUnit e jIntegrity

Quais o tipos comuns de teste?

Page 5: Teste de Integração com DbUnit e jIntegrity

Quais o tipos comuns de teste?

Unidade

Page 6: Teste de Integração com DbUnit e jIntegrity

Quais o tipos comuns de teste?

Unidade Manual

Page 7: Teste de Integração com DbUnit e jIntegrity

Quais o tipos comuns de teste?

Unidade

Aceitação

Manual

Page 8: Teste de Integração com DbUnit e jIntegrity

Quais o tipos comuns de teste?

Unidade

Aceitação

Manual

Integração

Page 9: Teste de Integração com DbUnit e jIntegrity

Teste de integração éteste de “maxu”.

Page 10: Teste de Integração com DbUnit e jIntegrity

Eu disse Macho!!!

Page 11: Teste de Integração com DbUnit e jIntegrity

Acessa diretamente obanco de dados

Page 12: Teste de Integração com DbUnit e jIntegrity

Terei que alimentar o banco?

Page 13: Teste de Integração com DbUnit e jIntegrity

@Beforepublic void setup() { // SQL code...}

@Afterpublic void tearDown() { // SQL code...}

Page 14: Teste de Integração com DbUnit e jIntegrity

@Beforepublic void setup() { // SQL code...}

@Afterpublic void tearDown() { // SQL code...}

@Testpublic void shouldLoadByID() { assertNotNull("should find", repository.loadByID(1l));}

Page 15: Teste de Integração com DbUnit e jIntegrity

<dataset> <User id="1" email="[email protected]" name="name-1" /> <User id="2" email="[email protected]" name="name-2" /> <User id="3" email="[email protected]" name="name-3" /></dataset>

public class User {

private Long id; private String email; private String name;

}

Model x XML

Page 16: Teste de Integração com DbUnit e jIntegrity

@Beforepublic void setup() { execute(INSERT, "User.xml");}

@Afterpublic void tearDown() {

execute(DELETE, "User.xml");}

@Testpublic void shouldLoadByID() { assertNotNull("should find", repository.loadByID(1l));}

Page 17: Teste de Integração com DbUnit e jIntegrity

Dump Insert

Delete Update

Page 18: Teste de Integração com DbUnit e jIntegrity

Dump Insert

Delete Update

Restore

XML

Page 19: Teste de Integração com DbUnit e jIntegrity

Class.forName("com.mysql.jdbc.Driver").newInstance();

Connection conn = DriverManager .getConnection("jdbc:mysql://localhost/test", "root", "root");

Page 20: Teste de Integração com DbUnit e jIntegrity

Class.forName("com.mysql.jdbc.Driver").newInstance();

Connection conn = DriverManager .getConnection("jdbc:mysql://localhost/test", "root", "root");

IDatabaseConnection iConn = new DatabaseConnection(conn);

Page 21: Teste de Integração com DbUnit e jIntegrity

Class.forName("com.mysql.jdbc.Driver").newInstance();

Connection conn = DriverManager .getConnection("jdbc:mysql://localhost/test", "root", "root");

IDatabaseConnection iConn = new DatabaseConnection(conn);

InputStream stream = getClass().getResourceAsStream("/User.xml");

FlatXmlDataSetBuilder builder = new FlatXmlDataSetBuilder();

IDataSet dataSet = builder.build(stream);

Page 22: Teste de Integração com DbUnit e jIntegrity

Class.forName("com.mysql.jdbc.Driver").newInstance();

Connection conn = DriverManager .getConnection("jdbc:mysql://localhost/test", "root", "root");

IDatabaseConnection iConn = new DatabaseConnection(conn);

InputStream stream = getClass().getResourceAsStream("/User.xml");

FlatXmlDataSetBuilder builder = new FlatXmlDataSetBuilder();

IDataSet dataSet = builder.build(stream);

DatabaseOperation.INSERT.execute(iConn, dataSet);

iConn.close();

Page 23: Teste de Integração com DbUnit e jIntegrity

execute(CLEAN_INSERT, xml);

execute(DELETE, xml);

execute(DELETE_ALL, xml);

execute(INSERT, xml);

execute(REFRESH, xml);

execute(UPDATE, xml);

execute(TRUNCATE_TABLE, xml);

Page 24: Teste de Integração com DbUnit e jIntegrity

Show me the code!

Page 25: Teste de Integração com DbUnit e jIntegrity

Problemas

dbUnitProvider.execute(DatabaseOperation.INSERT, "/User.xml");dbUnitProvider.execute(DatabaseOperation.INSERT, "/Product.xml");dbUnitProvider.execute(DatabaseOperation.INSERT, "/Payment.xml");

Muito código? Organização?

Flexibilidade? Reescrita?

dbUnitProvider.execute(DatabaseOperation.DELETE, "/Payment.xml");dbUnitProvider.execute(DatabaseOperation.DELETE, "/Product.xml");dbUnitProvider.execute(DatabaseOperation.DELETE, "/User.xml");

Page 26: Teste de Integração com DbUnit e jIntegrity

jIntegrityA toolbox to help you test!

Page 27: Teste de Integração com DbUnit e jIntegrity

Properties

path=xml=User,Product,Payment

jintegrity.properties

"/User.xml", "/Product.xml", "/Payment.xml"

Page 28: Teste de Integração com DbUnit e jIntegrity

Properties

path=xml=User,Product,Payment

jintegrity.properties

"/User.xml", "/Product.xml", "/Payment.xml"

hibernate.properties

hibernate.connection.driver_class=hibernate.connection.url=hibernate.connection.username=hibernate.connection.password=

Page 29: Teste de Integração com DbUnit e jIntegrity

Configuração transparente!

JIntegrity helper = new JIntegrity();

Page 30: Teste de Integração com DbUnit e jIntegrity

helper.clean();

helper.insert();

Page 31: Teste de Integração com DbUnit e jIntegrity

helper.clean();

helper.insert();

"/User.xml", "/Product.xml", "/Payment.xml"

Page 32: Teste de Integração com DbUnit e jIntegrity

helper.clean();

helper.insert();

"/User.xml", "/Product.xml", "/Payment.xml"

"/Payment.xml", "/Product.xml", "/User.xml" // self.down?

Page 33: Teste de Integração com DbUnit e jIntegrity

helper.clean();

helper.insert();

helper.cleanAndInsert();

"/User.xml", "/Product.xml", "/Payment.xml"

"/Payment.xml", "/Product.xml", "/User.xml" // self.down?

Page 34: Teste de Integração com DbUnit e jIntegrity

Flexibilidade!

helper.path("my/package/dataset").insert();

Page 35: Teste de Integração com DbUnit e jIntegrity

Flexibilidade!

helper.xml("User", "Payment").insert();

helper.path("my/package/dataset").insert();

Page 36: Teste de Integração com DbUnit e jIntegrity

Flexibilidade!

helper.xml("User", "Payment").insert();

helper.path("my/package/dataset").insert();

helper.insert() .insert("User") .path("package/dataset").xml("User").insert() .insert("/package/xml/User");

Page 37: Teste de Integração com DbUnit e jIntegrity

Vendors!

helper.vendor(JIntegrity.ORACLE10G);

Page 38: Teste de Integração com DbUnit e jIntegrity

Vendors!

helper.useDB2();helper.useHSQL();helper.useMSSQL();helper.useMySQL();helper.useOracle10g();

helper.vendor(JIntegrity.ORACLE10G);

Page 39: Teste de Integração com DbUnit e jIntegrity

Helpers!

Page 40: Teste de Integração com DbUnit e jIntegrity

Helpers!private UserRepository repository;

Page 41: Teste de Integração com DbUnit e jIntegrity

Helpers!

@BeforeClass public static void beforeClass() {JPAHelper.entityManagerFactory("default");

}

private UserRepository repository;

Page 42: Teste de Integração com DbUnit e jIntegrity

Helpers!

@Before public void setup() { EntityManager manager = JPAHelper.currentEntityManager(); repository = new UserBusiness(manager);}

@BeforeClass public static void beforeClass() {JPAHelper.entityManagerFactory("default");

}

private UserRepository repository;

Page 43: Teste de Integração com DbUnit e jIntegrity

Helpers!

@Before public void setup() { EntityManager manager = JPAHelper.currentEntityManager(); repository = new UserBusiness(manager);}

@BeforeClass public static void beforeClass() {JPAHelper.entityManagerFactory("default");

}

private UserRepository repository;

@After public void tearDown() {JPAHelper.close();

}

Page 44: Teste de Integração com DbUnit e jIntegrity

Show me the code!

Page 45: Teste de Integração com DbUnit e jIntegrity

#greenbar

Page 46: Teste de Integração com DbUnit e jIntegrity

Referências

jIntegrity.com

DbUnit.org

github.com/wbotelhos/jintegrity

Page 47: Teste de Integração com DbUnit e jIntegrity

Dúvidas?

Page 48: Teste de Integração com DbUnit e jIntegrity

@wbotelhos | wbotelhos.com.br

WASHINGTON BOTELHO

Obrigado! (:

jIntegrity