Como Testar Sua Aplicação Grails

O framework Grails oferece uma API rica e simples para execução de testes, para várias fases do processo de produção do aplicativo. Estas fases são inicialmente separadas em:

  • unit
  • integration
  • functional
  • other

Novas fases ou tipos de testes podem ser adicionados a estas através do uso de plugins, sendo que as fases functional e other necessitam de plugins específicos antes de serem utilizadas.

Testes de Unidade

Os testes de unidade têm por finalidade garantir o funcionamento de porções mínimas do código implementado, como um método ou a verificação do estado de um objeto após uma determinada operação.

Para se testar comportamentos dinâmicamente criados pelo framework, nesta fase, é necessário fazer a injeção manual destes nas classes ou fazer o mocking de objetos para se conseguir testar por exemplo as constraints de uma classe de domínio ou os controllers.

Teste de integração

A fase de testes de integração difere da fase de teste de unidade pelo fato de o Grails preparar todo o ambiente de execução dos testes conforme este seria no ambiente de execução do aplicativo.

Nesta fase todos os métodos dinamicamente injetados pelo framework estarão disponíveis para uso, sem necessidade de fazer mocking ou injeção manual dos mesmos.

Durante os testes de integração você tem acesso ao um banco de dados configurado no arquivo conf/DataSource.groovy para o ambiente de testes. Durante os testes o Grails e encarrega de criar a estrutura do banco de dados, iniciar uma transação e no final desfazer (rollback) tudo no final do processo transparentemente.

Testes funcionais

Os testes funcionais têm por objetivo enviar requisições HTTP para a aplicação e verificar o comportamento resultante. O Grails não provê suporte nativo para a execução de testes funcionais. Alguns plugins estão disponíveis atualmente para isto:

Executando os Testes

Por definição as classes de teste devem estender a classe GrailsUnitTestCase. Seu nome deve ter o sufixo Tests e seus métodos o prefixo test, conforme a especificação do JUnit 3, que é a base de execução dos testes de unidade e integração do Grails.

As classes de teste de unidade se encontram dentro do diretório test/unit e as de teste de integração no diretório test/integration.

//Um exemplo de classe de teste do Grails
package exemplo
 
import grails.test.*
 
class PessoaTests extends GrailsUnitTestCase {
 
    protected void setUp() {
        super.setUp()
    }
 
    protected void tearDown() {
        super.tearDown()
    }
 
    void testAlgumaCoisa() {
        assertTrue false
    }
}

As classes de teste de unidade e integração pode ser criadas respectivamentes pelos comandos:

$ grails create-unit-test MeuTesteDeUnidade
$ grails create-integration-test MeuTesteDeIntegracao

O comando test-app do Grails oferece algumas opções bem interessantes para acelerar e automatizar o processo de testes da aplicação.

Em sua forma mais comum, sem parâmetros, todos os testes encontrados serão executados:

$ grails test-app

Alguns argumentos podem ser adicionados ao comando para agilizar o processo de teste, como por exemplo específicar uma fase de testes:

$ grails test-app unit:
$ grails test-app integration:

Além disso você pode combinar mais parâmetros para testar uma classe isoladamente…

$ grails test-app unit: exemplo.Pessoa
$ grails test-app integration: exemplo.PessoaController

ou testar um método específico…

$ grails test-app unit: exemplo.Pessoa.testAlgumaCoisa

Metacaracteres

Você pode utilizar metacaracteres para testar todas as classes de um pacote…

$ grails test-app unit: exemplo.*

todas as classes de um pacote e seus subpacotes…

$ grails test-app integration: exemplo.**.*

classes terminadas com uma determinada sentença…

$ grails test-app *Controller

ou combinar tudo isto…

$ grails test-app exemplo.**.* *Controller

Visualizando os resultados

O resultado da execução dos testes é salvo na pasta target/test-reports em formato plain text, HTML e XML.

Conclusão

Este artigo é apenas uma breve introdução a API e execução de de testes do Grails. Não deixe de consultar a última versão da documentação do framework.

Deixe um Comentário

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">