Spock framework Testes automatizados ágeis para Java e REST
José Yoshiriro
Conteúdo
Edição atualizada em 06/2024.
Versão atualizada para Spock 2.3-groovy-4.0.
A presença de testes automatizados é importante para dar segurança em qualquer código. Seja para refatorá-lo, mantê-lo, seja para inserir novas funcionalidades, os testes permitem uma detecção mais rápida quando algum comportamento anterior é quebrado. Um software interage com diversos recursos dentro de seu ecossistema e provê diferentes tipos de interface para a execução de suas funcionalidades, e é necessário lidar com tudo isso ao criar seus testes automatizados. O Spock framework é uma ferramenta muito poderosa, que pode ser a grande aliada de sua equipe na construção mais rápida e simples de testes melhores e menos verbosos.
Neste livro, José Yoshiriro ensina a utilizar as funcionalidades do Spock framework e apresenta as técnicas de teste, juntamente com exemplos didáticos e focados em problemas do mundo real para tecnologias que são padrão de mercado. Você conhecerá esta ferramenta completa, que dispensa a configuração de bibliotecas adicionais, e dominará suas principais funcionalidades: criação de simples testes unitários; uso de Mocks; o recurso de Data-Driven Testing; de integração para Spring e funcionais para REST APIs.
Tópicos que foram atualizados:
Versão do Groovy atualizada para 4.0.x; Versão do Spock atualizada para 2.3-groovy-4.0; Orientações de configurações melhoradas; Inclusão de orientações de configurações com asdf; Projetos de referência online para Java 8, 11 e 17, com Maven e Gradle; Retirada da orientações de configurações com SBT.
Sumário
- 1 Por que usar Spock framework?
- 1.1 Por que criar testes automatizados?
- 1.2 Testes que podemos criar com Spock
- 1.3 Por que usar Spock para projetos Java se temos JUnit, TestNG, Mockito etc.?
- 2 Preparando o ambiente para trabalhar com Spock
- 2.1 Configurando o Groovy nas principais IDEs Java
- 2.2 Uso de Groovy em editores de código simples (VS Code, Sublime Text, Vim etc.)
- 2.3 Configurando as dependências Spock do projeto com Maven
- 2.4 Configurando as dependências Spock do projeto com Gradle
- 3 Primeiros testes automatizados com Spock
- 3.1 Primeiro teste: A classe Math calcula potência corretamente?
- 3.2 Executando um teste
- 3.3 O que acontece quando um teste falha
- 3.4 Forçando a execução de várias asserções (ou verificações)
- 3.5 Exemplos de execução de testes no IntelliJ e no Eclipse
- 3.6 Problema na execução de testes no Eclipse 2018 e 2019
- 4 Anatomia de um teste Spock
- 4.1 Testes são chamados de Specifications
- 4.2 Uma classe de teste pode conter vários métodos de teste
- 4.3 Fixture Methods (métodos de montagem)
- 4.4 Blocks (Blocos)
- 4.5 Por que a anatomia do Spock é essa?
- 5 Data-Driven Testing - Facilitando os testes de múltiplos cenários
- 5.1 Testando um Analisador de IMC
- 5.2 Um método, vários cenários
- 5.3 Descrevendo os testes que falham com detalhes dos cenários
- 6 Exception Conditions - Testes à espera de exceções
- 6.1 Às vezes o certo é dar errado
- 6.2 Testando vários cenários de erro
- 6.3 Verificando detalhes das exceções
- 7 Testando com a ajuda de mocks
- 7.1 O que são dublês e por que usá-los
- 7.2 Dependências adicionais para mocks
- 7.3 Configurando retornos de métodos em mocks
- 7.4 Configurando mocks para lançarem exceções
- 7.5 Configurando retornos de métodos aninhados em mocks
- 7.6 Verificando a quantidade de execuções de métodos dos mocks
- 8 Testando RESTful APIs
- 8.1 O que são RESTful APIs e a importância de serem bem testadas
- 8.2 Documentação da API de Cálculo e Banco de IMC
- 8.3 Testando o endpoint GET /imcs/{id}
- 8.4 Testando o endpoint GET /imcs
- 8.5 Testando o endpoint POST /imcs
- 8.6 Testando o endpoint DELETE /imcs/{id}
- 9 Recursos avançados
- 9.1 Ignorando testes
- 9.2 Tolerância de tempo de um teste com @Timeout
- 9.3 Executando os testes na ordem em que estão na classe com @Stepwise
- 9.4 Automatizando a repetição de testes com @Retry
- 9.5 Compartilhando objetos entre testes com @Shared
- 9.6 Restaurando propriedades do sistema com @RestoreSystemProperties
- 9.7 Dando um título para a classe de testes com @Title
- 9.8 Indicando referências
- 10 Relatórios profissionais com Spock Reports Extention
- 10.1 Configurando o Spock Reports Extension
- 10.2 Alterando o diretório de geração do relatório
- 10.3 Anotações @Title, @See e @Issue são usadas nos relatórios
- 11 Testando metaprogramação (anotações)
- 11.1 Metaprogramação em Java: anotações
- 11.2 Por que testar anotações?
- 11.3 Testando anotações de uma entidade JPA
- 12 Testes de integração em projetos Spring
- 12.1 Spring TestContext framework e Spring Module do Spock
- 12.2 Testes de integração em um projeto Spring Boot
- 12.3 Testes de integração em um projeto Spring MVC
- 12.4 Ciclo de vida do contexto Spring nos testes de integração
- 12.5 Profiles e properties do projeto Spring nos testes de integração
- 13 Apêndice A - Guia de Groovy para desenvolvedores Java
- 13.1 Como funciona o Groovy
- 13.2 Características e recursos do Groovy
- 14 Apêndice B - Perguntas frequentes sobre o Spock
- 15 Referências
Autor

José Yoshiriro
Bacharel em sistemas de informação (IESAM), especialista em engenharia de sistemas (ESAB) e mestre em ciências (USP). Ministra aulas em cursos de nível universitário desde 2010. É líder pedagógico na Faculdade São Paulo Tech School (SPTech) onde trabalha desde 2014. Já foi professor da FIAP e conteudista da FIAP ON entre 2017 e 2018. Trabalha com desenvolvimento/arquitetura de software desde 2004, tendo trabalhado principalmente com Java, Groovy, JavaScript e Python. Já atuou na criação e/ou evolução de sistemas usados em empresas como BrasilPrev, Citibank, Caixa Econômica Federal, Rico Home Broker, BNP, Tribunal de Justiça do Pará, American Red Cross (EUA) e OneBlood (EUA). Já contribuiu em vários projetos open source. É criador do validador de Bitcoin do Hibernate Validator. Detém certificações internacionais Oracle (SCJP 6, SCWCD 5 e SCBCD 5) e OMG (OCUP). Possui vários artigos sobre programação publicados no Brasil e EUA e já palestrou em vários eventos de tecnologia como FISL (2015), Virada Tecnológica de São Paulo de 2017 e TDC São Paulo (2014, 2015 e 2017). É autor dos livros "Spock framework: Testes automatizados ágeis para Java e REST" e "Deixe seu código limpo e brilhante: Desmistificando Clean Code com Java e Python", ambos pela Casa do Código.
Dados do produto
- Número de páginas:
- 252
- ISBN:
- 978-85-5519-373-6
- Data publicação:
- 10/2018. Atualizado em 06/2024.