Neste passo vamos configurar a Dependência Spring Boot Starter Test (adicionada na criação do projeto) e adicionar a Dependência do Banco de dados em memória H2.
Vamos Configurar a Dependência Spring Boot Starter Test para aceitar apenas o JUnit 5. No arquivo, pom.xml, vamos alterar a dependência Springboot Starter Test conforme o código abaixo:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
*Essa alteração irá ignorar as versões anteriores ao JUnit 5 (vintage).
Para utilizar o Banco de Dados H2 no seu projeto será necessário inserir a Dependência no seu arquivo pom.xml. No arquivo, pom.xml, vamos adicionar as linhas abaixo:
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>
*Sugerimos adicionar esta dependência logo abaixo da dependência do MySQL.
Na Classe Usuario, na camada Model, vamos criar 2 Métodos construtores: o primeiro com todos os Atributos (exceto o Atributo postagens, que tem a função de listar as postagens associadas ao usuário, logo é um Atributo preenchido automaticamente pelo Relacionamento entre as Classes) e um segundo Método construtor vazio, ou seja, sem Atributos como mostra o trecho de código abaixo. Através destes dois Métodos iremos instanciar alguns objetos da Classe Usuario nas nossas Classes de teste.
public Usuario(Long id, String nome, String usuario, String senha, String foto) {
this.id = id;
this.nome = nome;
this.usuario = usuario;
this.senha = senha;
this.foto = foto;
}
public Usuario() { }
-
Para criar o Primeiro Construtor, posicione o cursor após o último Atributo da Classe (em nosso exemplo postagem) e clique no menu Source 🡪 Generate Constructor using fields.
-
Na janela Generate Constructor using fields, selecione todos os Atributos, exceto postagem e marque a opção Omit call to default constructor super() como mostra a figura abaixo:
- Clique no botão Generate para concluir. O Construtor será gerado com todas as anotações nos parâmetros, como mostra a figura abaixo:
public Usuario(Long id, @NotNull(message = "O Atributo Nome é Obrigatório!") String nome,
@NotNull(message = "O Atributo Usuário é Obrigatório!") @Email(message = "O Atributo Usuário deve ser um email válido!") String usuario,
@NotBlank(message = "O Atributo Senha é Obrigatório!") @Size(min = 8, message = "A Senha deve ter no mínimo 8 caracteres") String senha,
String foto) {
super();
this.id = id;
this.nome = nome;
this.usuario = usuario;
this.senha = senha;
this.foto = foto;
}
- Apague todas as anotações dos parâmetros do Método Construtor. O Método ficará igual ao trecho de código abaixo:
public Usuario(Long id, String nome, String usuario, String senha, String foto) {
this.id = id;
this.nome = nome;
this.usuario = usuario;
this.senha = senha;
this.foto = foto;
}
Agora vamos criar o segundo Método Construtor:
-
Posicione o cursor após o Método Construtor com parâmetros e clique no menu Source 🡪 Generate Constructor using fields.
-
Na janela Generate Constructor using fields, desmarque todos os Atributos e marque a opção Omit call to default constructor super() como mostra a figura abaixo:
-
Clique no botão Generate para concluir.
-
O construtor vazio ficará igual a imagem abaixo:
public Usuario() { }
Na Interface UsuarioRepository, na camada Repository, vamos criar a Query Method findAllByNomeContainingIgnoreCase(@Param("nome") String nome) para efetuar alguns testes na Camada Repository. O código da Interface UsuarioRepository atualizado ficará assim:
package com.generation.blogpessoal.repository;
import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import com.generation.blogpessoal.model.Usuario;
@Repository
public interface UsuarioRepository extends JpaRepository<Usuario, Long>{
public Optional<Usuario> findByUsuario(String usuario);
public List <Usuario> findAllByNomeContainingIgnoreCase(@Param("nome") String nome);
}
Agora vamos configurar o Banco de dados H2 para executar os nossos testes sem alterar o Banco de dados principal da aplicação. Como não temos em nosso projeto a pasta resources, dentro da Source Folder src/test, vamos criar a pasta e na sequência inserir o arquivo application.properties para configurarmos o Banco de dados de testes (H2).
- No lado esquerdo superior, na Guia Package Explorer, clique sobre a pasta do projeto com o botão direito do mouse e clique na opção New 🡪 Source folder
- Em Source Folder, no item Folder name, informe o caminho como mostra a figura abaixo (src/test/resources), e clique em Finish:
-
No lado esquerdo superior, na Guia Package explorer, na Source Folder src/test/resources, clique com o botão direito do mouse e clique na opção New 🡪 File.
-
Em File name, digite o nome do arquivo (application.properties) e clique em Finish.
- Veja o arquivo criado na Package Explorer
- Insira no arquivo application.properties criado em src/test/resources o código abaixo, para configurar o Banco de dados H2:
spring.jpa.hibernate.ddl-auto=create-drop
spring.datasource.url=jdbc:h2:file:~/target/h2;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=sa
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
Linha | Descrição |
---|---|
spring.jpa.hibernate.ddl-auto | Configura o Spring para criar (create) o Banco de dados ao executar a aplicação e apagar (drop) o Banco de dados ao finalizar a aplicação |
spring.datasource.url | Define que o Banco de dados será gerado em um arquivo na pasta target/h2 (jdbc:h2:file:~/target/h2) e o H2 não será fechado até que o STS seja finalizado (DB_CLOSE_ON_EXIT=FALSE) |
spring.datasource.driverClassName | Define o Driver do Banco de dados (H2) |
spring.datasource.username | Define o usuário do H2 (sa) |
spring.datasource.password | Define a senha do usuário do H2 (sa) |
spring.jpa.database-platform | Configura o tipo do Banco de dados (H2). |
Na Source Folder de Testes (src/test/java), observe que existe a mesma estrutura de pacotes da Source Folder Principal (src/main/java).
Vamos criar em src/test/java as packages Repository e Controller:
-
No lado esquerdo superior, na Guia Package explorer, clique com o botão direito do mouse sobre a Package com.generation.blogpessoal, na Source Folder src/test/java e clique na opção New 🡪 Package.
-
Na janela New Java Package, no item Name, acrescente no final do nome da Package .repository, como mostra a figura abaixo:
-
Clique no botão Finish para concluir.
-
Repita os passos 1-3 para criar a Package .controller
-
O Resultado você confere na imagem abaixo: