http://www.flickr.com/photos/jacques_daigneault/3100967998/sizes/o/




 Testes de
Integração

       André Faria
http://www.flickr.com/photos/cuppini/3211910657/




 O que os
  testes
unitários
   não
resolvem?
http://www.flickr.com/photos/14646075@N03/3498450536/sizes/o/


   O que testar ?
      Ser vice Layer
     Domain Objects
         Aspects
      Web Tier Code
       SQL Queries
Interation with JEE APIs
http://www.flickr.com/photos/14646075@N03/3498450536/sizes/o/


        Non-Java Code
  Store Procedures / Scripts

        Database Schema
         Views, Triggers

Spring and Other Configurations
        XML, Properties

         O/R Mapping
     JSPs and Other Views
http://www.flickr.com/photos/sveinhal/2729087260/sizes/l/


Testando Código de Persistência


       O que não testar?
      Connections Leaks
  Use Spring JDBC, JPA, etc...

        O que testar?
       SQL, HQL, JP QL

      Testes Localizados
     DAO interface layer
http://www.flickr.com/photos/colorblindpicaso/3399410617/sizes/o/



Teste sem depender do
       servidor
                 + rápido
            Mesmo do que Tomcat ou Jetty



          Fácil de debugar

       Possibilidade de rodar
      testes individualmente

  Rode de sua IDE ou Build Script
Como o Spring pode te Ajudar com isso?
http://www.flickr.com/photos/dm-set/3846819118/sizes/l/


Spring Integration
Testing
O pacote org.springframework.test
(spring-mock.jar)


JUnit Superclasses

Spring Context Loading e Caching
Injeção de Dependências
http://www.flickr.com/photos/vgm8383/4061536522/sizes/l/


 Data Access e Transaction Management
 (Criação e Rollback Automático, você não
precisar escrever isso no setup e teardown)
http://www.flickr.com/photos/stephenpoff/2913508009/sizes/l/




 Alta Performance
Média de 100 à 1000
 testes por minuto
http://www.flickr.com/photos/soldiersmediacenter/4097699857/sizes/l/


                                    Teste Triggers,
                                      Sequences,
                                   Store Procedures,
                                   Código JDBC, etc.
Context Caching
bet ween many Test Cases

 Importante quando se usa
  Hibernate devido ao alto
custo da criação da Session
          Factory
http://www.flickr.com/photos/jamimages/121750129/sizes/l/



                     Você não
                 precisa alterar
                 absolutamente
                  nada nos seus
                   objetos DAO
                 entre os testes
                   e a entrega
http://www.flickr.com/photos/libraryman/95516793/



         Arquivo de
       Configuração do
      Spring específico
      para Testes para
         configurar
       Recursos como
       Banco de Dados
        por exemplo
Na Prática


       @RunWith(SpringJUnit4ClassRunner.class)

            @ContextConfiguration(locations =
      { "/applicationContext-resources-test.xml" })

    @TransactionConfiguration(defaultRollback = true)
http://www.flickr.com/photos/gavinbell/35378445/sizes/o/




                            “Nos Testes de
                         Integração sempre
                         que possível prefira
                           usar o banco de
                         dados real ao invés
                            de abordagens
                         baseadas em Java
                           DB ou HSQL DB”
http://www.flickr.com/photos/heypaul/107326157/sizes/l/




   Annotations
         @Timed(mills=1000)

                  @Repeat(5)

@ExpectedException(Exception.class)

            @DirtiesContext
      //Rebuild   the Context after the test
http://www.flickr.com/photos/heypaul/107326157/sizes/l/




+ Annotations
   @BeforeTransaction
       @Before
        @Test
       @After
  @AfterTransaction

  @NotTransactional
   @Rollback(false)
Entenda os diferentes tipos de
   testes e seus objetivos
Testes Unitários e Testes de
Integração não são exclusivos
Pirâmide de Testes
        Aceitação



      Integração


   Unitários
Aprofunde-se



Palestra do Rod Johnson no No Fluff Just Stuff Symposiums em 2007
http://www.infoq.com/presentations/system-integration-testing-with-spring
OBRIGADO

Testes de Integração