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

Teste de Integracao com DbUnit e JStryker