SlideShare une entreprise Scribd logo
1  sur  38
Télécharger pour lire hors ligne
TESTE DE INTEGRAÇÃO COM




           E

       JSTRYKER

                    @wbotelhos
               wbotelhos.com.br
Washington Botelho


 wbotelhos.com.br


   @wbotelhos
TESTE DE INTEGRAÇÃO COM




           E

       JSTRYKER

                    @wbotelhos
               wbotelhos.com.br
Por que testar?

Para garantir o funcionamento do código.
Quais o tipos comuns de teste?
Quais o tipos comuns de teste?




Unidade
Quais o tipos comuns de teste?




Unidade                    Manual
Quais o tipos comuns de teste?




Unidade                    Manual




            Aceitação
Quais o tipos comuns de teste?


            Integração


Unidade                    Manual




            Aceitação
Teste de integração é
  teste de “maxu”.
Teste de integração é
  teste de “maxu”.
Eu disse Macho!!!
Acessa diretamente o
  banco de dados
Comunicação com o banco
Comunicação com o banco
@BeforeClass
public void beforeClass() {
   factory = new AnnotationConfiguration().configure().buildSessionFactory();
   session = factory.openSession();
	 transaction = session.getTransaction();
}
Comunicação com o banco
@BeforeClass
public void beforeClass() {
   factory = new AnnotationConfiguration().configure().buildSessionFactory();
   session = factory.openSession();
	 transaction = session.getTransaction();
}



     @Before
     public void setup() {
     	 transaction.begin();
     }
Comunicação com o banco
@BeforeClass
public void beforeClass() {
   factory = new AnnotationConfiguration().configure().buildSessionFactory();
   session = factory.openSession();
	 transaction = session.getTransaction();
}



     @Before
     public void setup() {
     	 transaction.begin();
     }



     @Test
     public void deveriaBuscarPorId() {
     	 assertNotNull("Loja não encontrada!", repository.loadById(1l));
     }
Comunicação com o banco
@BeforeClass
public void beforeClass() {
   factory = new AnnotationConfiguration().configure().buildSessionFactory();
   session = factory.openSession();
	 transaction = session.getTransaction();
}



     @Before                               @After
     public void setup() {                 public void tearDown() {
     	 transaction.begin();                	 transaction.rollback();
     }                                     }



     @Test
     public void deveriaBuscarPorId() {
     	 assertNotNull("Loja não encontrada!", repository.loadById(1l));
     }
E os meus preciosos dados?
Bancos específicos




Rails...
Bancos específicos




Rails...
hibernate.properties




hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.username=root
hibernate.connection.password=root
hibernate.connection.url=jdbc:mysql://127.0.0.1:3306/wbotelhos_test
hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
hibernate.hbm2ddl.auto=update
hibernate.validator.apply_to_ddl=true
Terei que alimentar o banco?
Dump     Insert




Delete   Update
Dump               Insert

         Restore




          XML

Delete             Update
Model x XML

               public class Loja {

                   private Long id;
               	   private String code;
               	   private String name;
               	
               }




<dataset>
	 <loja id="1" code="adena-001" name="Estação do Ar" />
   <loja id="2" code="adena-002" name="Acimaq" />
   <loja id="3" code="adena-003" name="Bertek" />
</dataset>
Populando o banco
                  a partir do XML

Connection conn = dataSource.getConnection();

IDatabaseConnection iConn =
      new MySqlConnection(conn, conn.getMetaData().getUserName());

FlatXmlDataSet xml =
      new FlatXmlDataSetBuilder().build(new FileInputStream("loja.xml"));

DatabaseOperation operation =
      new InsertIdentityOperation(DatabaseOperation.CLEAN_INSERT);

operation.execute(iConn, xml);

conn.close();
Rodolfo Lavieiro




                   José Ribeiro
JStryker




 Tools to help automated tests in java.
Subindo a JPA



@BeforeClass
public static void beforeClass() {
	 JPAHelper.entityManagerFactory("default");
}
Populando o banco e
recuperando o EntityManager


 @Before
 public void setup() {
 	 new DBUnitHelper().cleanInsert(“loja.xml”);

 	   EntityManager manager = JPAHelper.currentEntityManager();
 	   repository = new LojaBusiness(manager);
 }
@Test

@Test
public void deveriaBuscarPorId() {
	 assertNotNull("Loja não encontrada!", repository.loadById(1l));
}
Fecha a conexão
     e limpa o banco

@After
public void tearDown() {
	 JPAHelper.close();
	 new DBUnitHelper().deleteAll(“loja.xml”);
}
Código limpo, simples
     e testado.
#greenbar
Dúvidas???
TESTE DE INTEGRAÇÃO COM




           E

       JSTRYKER

                    @wbotelhos
               wbotelhos.com.br

Contenu connexe

Tendances

Testes em Aplicações Web com Cactus
Testes em Aplicações Web com CactusTestes em Aplicações Web com Cactus
Testes em Aplicações Web com CactusDenis L Presciliano
 
Acesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBCAcesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBCLuiz Ricardo Silva
 
Manipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBCManipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBCAntonio Passos
 
Mobileconf dicas-android
Mobileconf dicas-androidMobileconf dicas-android
Mobileconf dicas-androidAlberto Souza
 
Persistência com JPA e Hibernate
Persistência com JPA e HibernatePersistência com JPA e Hibernate
Persistência com JPA e HibernateFernando Oliveira
 
Node.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasNode.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasRodrigo Branas
 
Desenvolvimento de um CRUD utilizando Stored Procedure
Desenvolvimento de um CRUD utilizando Stored ProcedureDesenvolvimento de um CRUD utilizando Stored Procedure
Desenvolvimento de um CRUD utilizando Stored ProcedureFernando Roberto Proença
 
NodeJS - E/S não-bloqueante - Dirigido a Eventos
NodeJS - E/S não-bloqueante - Dirigido a EventosNodeJS - E/S não-bloqueante - Dirigido a Eventos
NodeJS - E/S não-bloqueante - Dirigido a EventosÁtila Camurça
 

Tendances (12)

Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
Testes em Aplicações Web com Cactus
Testes em Aplicações Web com CactusTestes em Aplicações Web com Cactus
Testes em Aplicações Web com Cactus
 
Acesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBCAcesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBC
 
Manipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBCManipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBC
 
Wicket 2008
Wicket 2008Wicket 2008
Wicket 2008
 
Sessões
SessõesSessões
Sessões
 
Mobileconf dicas-android
Mobileconf dicas-androidMobileconf dicas-android
Mobileconf dicas-android
 
Persistência com JPA e Hibernate
Persistência com JPA e HibernatePersistência com JPA e Hibernate
Persistência com JPA e Hibernate
 
Node.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasNode.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo Branas
 
Desenvolvimento de um CRUD utilizando Stored Procedure
Desenvolvimento de um CRUD utilizando Stored ProcedureDesenvolvimento de um CRUD utilizando Stored Procedure
Desenvolvimento de um CRUD utilizando Stored Procedure
 
NodeJS - E/S não-bloqueante - Dirigido a Eventos
NodeJS - E/S não-bloqueante - Dirigido a EventosNodeJS - E/S não-bloqueante - Dirigido a Eventos
NodeJS - E/S não-bloqueante - Dirigido a Eventos
 
JDBC
JDBCJDBC
JDBC
 

Similaire à Teste de Integracao com DbUnit e JStryker

Spring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento webSpring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento webelliando dias
 
Java - Introdução a banco de dados
Java - Introdução a banco de dadosJava - Introdução a banco de dados
Java - Introdução a banco de dadosSérgio Souza Costa
 
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor AndroidDesvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Androidjoaobmonteiro
 
Como ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComo ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComunidade NetPonto
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Androidtdc-globalcode
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Androidtdc-globalcode
 
AspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em JavaAspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em Javaelliando dias
 
TDD - Algumas lições aprendidas com o livro GOOS
TDD - Algumas lições aprendidas com o livro GOOSTDD - Algumas lições aprendidas com o livro GOOS
TDD - Algumas lições aprendidas com o livro GOOSFábio Miranda
 
Jdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITYJdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITYraquelcarsi
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOLgrupoweblovers
 
React - Compartilhando estado entre componentes
React - Compartilhando estado entre componentesReact - Compartilhando estado entre componentes
React - Compartilhando estado entre componentesJefferson Mariano de Souza
 
Domain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHDomain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHGiovanni Bassi
 
DevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webappsDevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webappsSuissa
 

Similaire à Teste de Integracao com DbUnit e JStryker (20)

Spring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento webSpring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento web
 
Java - Introdução a banco de dados
Java - Introdução a banco de dadosJava - Introdução a banco de dados
Java - Introdução a banco de dados
 
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor AndroidDesvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
 
DDD > Experiências
DDD > ExperiênciasDDD > Experiências
DDD > Experiências
 
Como ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComo ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noite
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
 
Jdbc e hibernate
Jdbc e hibernateJdbc e hibernate
Jdbc e hibernate
 
AspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em JavaAspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em Java
 
TDD - Algumas lições aprendidas com o livro GOOS
TDD - Algumas lições aprendidas com o livro GOOSTDD - Algumas lições aprendidas com o livro GOOS
TDD - Algumas lições aprendidas com o livro GOOS
 
Jdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITYJdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITY
 
Artigoajax
ArtigoajaxArtigoajax
Artigoajax
 
Ganhando tempo com casos de testes
Ganhando tempo com casos de testesGanhando tempo com casos de testes
Ganhando tempo com casos de testes
 
Java 16 Jdbc
Java 16 JdbcJava 16 Jdbc
Java 16 Jdbc
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOL
 
Relatório
RelatórioRelatório
Relatório
 
React - Compartilhando estado entre componentes
React - Compartilhando estado entre componentesReact - Compartilhando estado entre componentes
React - Compartilhando estado entre componentes
 
Domain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHDomain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BH
 
DevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webappsDevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webapps
 
MS Enterprise Library
MS Enterprise LibraryMS Enterprise Library
MS Enterprise Library
 

Teste de Integracao com DbUnit e JStryker