Estratégia e Execução de Testes
Ferramentas utilizadas
JUnit
Biblioteca para testes unitários e de integração amplamente utilizada em aplicações Java.
Mockito
Biblioteca para a criação de objetos falsos (mocks) para facilitar a escrita e aumentar a qualidade de testes.
JaCoCo (Java Code Coverage)
Permite acompanhar e gerar relatórios para encontrar código não executado durante os testes automatizados (cobertos).
Coveralls
Permite visualizar a porcentagem de cobertura de testes da aplicação, visando garantir o acompanhamento público da qualidade de nossos testes automatizados.
Testes unitários e de integração
Testes unitários e de integração são utilizados para garantir que a implementação de métodos e classes agem de acordo com o comportamento esperado, e também como forma de documentação técnica mais detalhada do comportamento das partes relevantes do sistema.
Para executar apenas os testes unitários e de integração isoladamente, utilize a tarefa test
do Gradle:
./gradlew test
Esta tarefa executa os testes unitários e de integração Java utilizando JUnit. Exemplo de saída:
mpog:portal-de-servicos $ ./gradlew test
Starting a new Gradle Daemon for this build (subsequent builds will be faster).
:compileJava UP-TO-DATE
:assetCompile
Compiling assets in directory /Users/cvillela/Sync/src/servicos.gov.br/portal-de-servicos/src/main/assets
Processing File 1 of 2 - main.scss
Working Path:
Compiling file main.scss
write /main.css
Found Output File /main.css
Minifying File 1 of 2 - main
Compressing File 1 of 2 - main
Processing File 2 of 2 - print.scss
Working Path:
Compiling file print.scss
write /print.css
Found Output File /print.css
Minifying File 2 of 2 - print
Compressing File 2 of 2 - print
Finished Precompiling Assets
:processResources
:classes
:compileTestJava
:processTestResources
:testClasses
:test
00000000-0000-0000-0000-000000000000 INFO [Thread-5] o.s.w.c.s.GenericWebApplicationContext - Closing org.springframework.web.context.support.GenericWebApplicationContext@60388907: startup date [Wed Aug 19 15:26:53 BRT 2015]; root of context hierarchy
... (mais linhas de diagnóstico) ...
BUILD SUCCESSFUL
Total time: 1 mins 30.468 secs
Cobertura de testes
Após executar a tarefa test
, descrita acima, um relatório de cobertura de código pode ser gerado através da tarefa jacocoTestReport
:
./gradlew jacocoTestReport
Os relatórios ficam disponíveis no diretório build/reports/jacoco/
, em formatos XML e HTML, após a execução.
Coveralls
Resultados dos relatórios de cobertura de testes são automaticamente disponibilizados através da integração contínua, utilizando o Coveralls, para todas as revisões do projeto.
Verificações estáticas
Antes de publicar alterações a uma funcionalidade, com git push
, é necessário rodar todas as tarefas de testes e verificação do Gradle:
./gradlew check
Esta tarefa compila e executa os testes, gera relatórios de execução e cobertura, bem como busca por possíveis bugs no código através da ferramenta FindBugs. Quando são encontradas violações ou possíveis bugs cobertos pelo FindBugs, estes são descritos na saída da execução, e descritos em um arquivo HTML gerado pela ferramenta.