Testes - ecosif-masterdata
Este documento descreve como escrever e executar testes no ecosif-masterdata.
Estrutura de Testes
Localização
Os testes devem estar em src/test/java no mesmo pacote que o código testado.
Tipos de Testes
1. Testes Unitários
Testam classes isoladamente, usando mocks para dependências.
Exemplo: Teste de Service
@ExtendWith(MockitoExtension.class)
class CompanyServiceImplTest {
@Mock
private CompanyRepository companyRepository;
@InjectMocks
private CompanyServiceImpl companyService;
@Test
void should_ReturnCompany_When_IdExists() {
// Given
Long id = 1L;
Company expectedCompany = new Company();
expectedCompany.setId(id);
when(companyRepository.findById(id))
.thenReturn(Optional.of(expectedCompany));
// When
Company result = companyService.findById(id);
// Then
assertThat(result).isNotNull();
assertThat(result.getId()).isEqualTo(id);
}
}
2. Testes de Integração
Testam a interação entre múltiplos componentes.
Exemplo: Teste de Controller
@SpringBootTest
@AutoConfigureMockMvc
class CompanyControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
void should_CreateCompany_When_ValidData() throws Exception {
CompanyDTO dto = new CompanyDTO();
dto.setName("Test Company");
dto.setCnpj("12345678000190");
mockMvc.perform(post("/company")
.contentType(MediaType.APPLICATION_JSON)
.content(asJsonString(dto))
.header("Authorization", "Bearer " + validToken))
.andExpect(status().isCreated());
}
}
Executando Testes
# Todos os testes
mvn test
# Teste específico
mvn test -Dtest=CompanyControllerTest
# Com cobertura
mvn test jacoco:report