Skip to content

08_unittest

Douglas Fernandes edited this page Dec 3, 2020 · 9 revisions

Unit Test

Agora a ideia é gerar unit tests simples.

Começamos este passo na branch t03/end

Todos os testes são feitos project/src/test/java/. Aonde teremos que criar novamente todas as packages.

A proposta é testar de formar isolada cada classe que criamos, sem considerar suas dependências.

Unit Test - Qualquer Classe

Importante: Na versão que este passo a passo foi feito, era usado o Junit4 por padrão no Spring Boot. Para seguir este passo a passo, será necessário excluir as seguintes linhas:

	<exclusions>
		<exclusion>
			<groupId>org.junit.vintage</groupId>
			<artifactId>junit-vintage-engine</artifactId>
		</exclusion>
	</exclusions>

Na versão 2.4+ no spring boot, adicione as seguintes linhas no pom.xml, e as exclusões anteriores não são necessárias.

<dependency>
    <groupId>org.junit.vintage</groupId>
    <artifactId>junit-vintage-engine</artifactId>
    <scope>test</scope>
    <exclusions>
        <exclusion>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>

Assim que der, atualizo o tutorial :/

  1. Vamos ajustar as nossos modelos, para facilitar os testes.
  • Altere a classe ClientResponse.java. DIFF.
  • Altere a classe Client.java. DIFF.

Agora todas as alterações serão feitas na pasta project/src/test/java. Todas as packages devem ser criadas novamente.

  1. Altere a classe ProjectApplicationTests DIFF.
    • Tenha certeza que a classe, e o função contextLoads, estão como public.
  2. Na package com.example.project.configuration crie a classe MapperConfigTest Arquivo final.
  3. Na package com.example.project.configuration crie a classe SwaggerConfigTest Arquivo final.
  4. Na package com.example.project.domain.mapper crie a classe ClientMapperTest Arquivo final.
  5. Na package com.example.project.domain.validators crie a classe PhoneValidatorTest Arquivo final.

Desafio: Criar o teste unitário para o validador de data.

Para ver as alterações completas DIFF das alterações

Unit Test - Services

  1. Na package com.example.project.service crie a classe ClientServiceTest Arquivo final.

Desafio: Completar os testes unitários da ClientServiceTest.

Unit Test - Controller

  1. Na package com.example.project.controller crie a classe ClientControllerTest Arquivo final.
  2. Na package com.example.project.domain.dto.request crie a classe ClientCreateRequestTest Arquivo final.

Para ver as alterações completas DIFF das alterações

Extra Configurando o Jacoco

Através do Jacoco, conseguimos ver a cobertura de testes do nosso código.

  1. Edite o arquivo pom.xml Diff.
  2. No terminal, execute o comando mvn test
  • Este comando vai gerar a pasta /target/site/jacoco. Agora temos a cobertura dos nossos testes no formato HTMl.

Para ver as alterações completas DIFF das alterações

Siga para o próximo tópico: Integration Test

Clone this wiki locally