Aprenda a testar projetos Spring Boot no IGRP Studio com testes unitários, de integração e funcionais para modelos, operações CRUD, relacionamentos e controladores.
O processo de Execução e Pré-visualização seguem um fluxo definido, garantindo a correta geração de componentes essenciais antes do arranque da aplicação.
Objetivo
Garantir que o sistema funciona corretamente em várias circunstâncias e cumpre os requisitos estabelecidos através de testes automatizados que verificam a criação de APIs, modelos, controladores e funcionalidades CRUD.
- Testes de criação de modelos
- Testes de operações CRUD
- Testes de relacionamentos
- Testes de controladores
- Garantia de qualidade
- Detecção precoce de erros
- Documentação viva
- Refatoração segura
Princípios de Teste
Testam componentes isolados
Exemplos: Services Repositories Entities DTOs
Testam interação entre componentes
Exemplos: Controllers Database External APIs Full flow
Testam funcionalidades completas
Exemplos: CRUD operations Business rules Validations Workflows
Tipos de Testes Implementados
Verificar criação correta de modelos a partir de configurações
Cenários Testados: Geração de modelo · Mapeamento JPA · Validação de atributos · Configurações de tabela
Garantir funcionamento das operações CRUD automáticas
Cenários Testados: Create operations · Read operations · Update operations · Delete operations
Validar relacionamentos entre modelos existentes
Cenários Testados: OneToOne · OneToMany · ManyToOne · ManyToMany
Verificar geração e funcionamento dos controladores
Cenários Testados: Endpoint generation · Service interface · Configuration files · Response validation
Cenários de Teste Detalhados
Criar um Novo Modelo
Processo de Teste
Resultado Esperado
O modelo é criado com sucesso na API, e todos os atributos especificados são refletidos no ficheiro gerado.
Adicionar Operações CRUD
Processo de Teste
Resultado Esperado
Um repositório que estende CrudRepository é criado, contendo todos os métodos CRUD necessários.
Adicionar Relações Entre Modelos
Processo de Teste
Resultado Esperado
As relações entre modelos são configuradas e refletidas apropriadamente no código gerado.
Testes de Controladores
Verificam se os controladores estão gerando os endpoints corretamente e se as respostas estão de acordo como esperado.
Objetivo: Testar que o controlador é gerado corretamente a partir do contexto fornecido e que o ficheiro resultante é guardado no local esperado.
Objetivo: Verificar que a interface de serviço é criada corretamente com os métodos declarados e é guardada no diretório especificado.
Objetivo: Garantir que o ficheiro de configuração do controlador é guardado no diretório .studio/controllers, validando que a configuração está correta.
Estrutura de Testes
Organização dos Testes
Ferramentas e Frameworks de Teste
Exemplo de Teste Unitário
Teste de Criação de Modelo
@ExtendWith(MockitoExtension.class)
class ModelGenerationTest {
@Mock
private ModelConfigRepository configRepository;
@InjectMocks
private ModelGenerationService generationService;
@Test
void deveGerarModeloComSucesso() {
// Arrange
ModelConfig config = new ModelConfig("Pessoa");
when(configRepository.save(any())).thenReturn(config);
// Act
Model result = generationService.generateModel(config);
// Assert
assertThat(result.getName()).isEqualTo("Pessoa");
verify(configRepository).save(config);
}
}Boas Práticas de Teste
- AAA Pattern: Organize testes com Arrange, Act, Assert
- Nomes Descritivos: Use nomes que descrevam o comportamento testado
- Testes Independentes: Cada teste deve ser independente dos outros
- Cobertura: Mantenha uma boa cobertura de código (>80%)
- Testes Rápidos: Testes unitários devem ser rápidos de executar
- Dados de Teste: Use dados realistas mas não sensíveis
Execução dos Testes
# Executar todos os testes
mvn test
# Executar com relatório de cobertura
mvn test jacoco:report
# Executar testes específicos
mvn test -Dtest=ModelGenerationTestÚltima atualização:
