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 substituir a dependência Spring Boot Starter Test:
Localize as linhas abaixo:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
Substitua por:
<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:
<!-- Dependência do Banco de dados H2 -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>
*Sugerimos adicionar esta dependência logo abaixo da dependência do MySQL.
Para concluir, não esqueça de Salvar o código (File 🡪 Save All).
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() { }
Para concluir, não esqueça de Salvar o código (File 🡪 Save All).
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).
ATENÇÃO: A configuração do Banco de dados H2 será feita na Source Folder Testes (src/test). Mantenha atenção aos detalhes para não errar na configuração. |
---|
- 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:
- Note que a Source Folder src/test/resources foi criada:
O Projeto Spring já está com a Source Folder src/test/resources mapeada logicamente dentro do projeto, mesmo sem ela estar criada fisicamente no disco. Neste caso, será necessário criar fisicamente a pasta resources manualmente, através do Windows Explorer:
- No lado esquerdo superior, na Guia Package Explorer, localize a Source Folder src/test/java:
- Clique sobre a Source Folder src/test/java com o botão direito do mouse e clique na opção Show in 🡪 System Explorer:
- A pasta será aberta no Windows Explorer.
- Crie a pasta resources, dentro da pasta que foi aberta no Windows Explorer:
- Feche o Windows Explorer e volte para o STS.
- 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 Refresh:
- Observe que a Source Folder src/test/resources foi criada:
Após criarmos a Source Folder src/test/resources, vamos criar o arquivo de configuração do Banco de dados H2, application.properties:
- 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.
- No item 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.datasource.url=jdbc:h2:mem:test;MODE=MySQL;
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=sa
Linha | Descrição |
---|---|
spring.datasource.url | Define que o Banco de dados será gerado em memória (mem) e se chamará test. A opção MODE=MySQL fará com que o Banco de dados H2 se comporte como o MySQL. Desta forma teremos uma maior compatibilidade com o Banco de dados principal (MySQL). |
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) |
Para concluir, não esqueça de Salvar o código (File 🡪 Save All).
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 .controller, como mostra a figura abaixo:
-
Clique no botão Finish para concluir.
-
O Resultado você confere na imagem abaixo: