SpringBoot usa EmbeddedDatabaseBuilder para teste de integração de banco de dados

SpringBoot usa EmbeddedDatabaseBuilder para teste de integração de banco de dados

Em aplicativos SpringBoot, podemos usar EmbeddedDatabaseBuilder para testes de integração de banco de dados. EmbeddedDatabaseBuilder é uma ferramenta de teste que nos permite iniciar um banco de dados embutido na memória e testá-lo. O uso do EmbeddedDatabaseBuilder nos permite testar facilmente o comportamento do banco de dados sem realmente nos conectarmos ao banco de dados.

Neste artigo, apresentaremos como usar EmbeddedDatabaseBuilder para teste de integração de banco de dados e como escrever casos de teste para testar o comportamento do banco de dados.

insira a descrição da imagem aqui

O que é EmbeddedDatabaseBuilder

EmbeddedDatabaseBuilder é uma ferramenta de teste no framework Spring, que pode iniciar um banco de dados embutido na memória e testá-lo. O EmbeddedDatabaseBuilder nos permite testar facilmente o comportamento do banco de dados sem realmente nos conectarmos ao banco de dados.

O EmbeddedDatabaseBuilder pode ser usado para testar componentes relacionados ao banco de dados, como Spring Data JPA, Hibernate e MyBatis. O EmbeddedDatabaseBuilder pode iniciar uma variedade de bancos de dados incorporados, incluindo H2, HSQLDB, Derby, etc.

Teste de integração de banco de dados com EmbeddedDatabaseBuilder

No SpringBoot, podemos usar EmbeddedDatabaseBuilder para testes de integração de banco de dados. O EmbeddedDatabaseBuilder pode ser configurado com as seguintes etapas:

  1. dependências de importação

Adicione as seguintes dependências ao arquivo pom.xml:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>test</scope>
</dependency>
  1. Criar classe de teste

Crie uma classe de teste e @RunWith(SpringRunner.class)adicione @SpringBootTestanotações para usar o contexto SpringBoot no teste.

@RunWith(SpringRunner.class)
@SpringBootTest
public class EmbeddedDatabaseBuilderTest {
    
    

}
  1. Injetar DataSource

Na classe de teste, precisamos injetar o objeto DataSource para usar o banco de dados embutido no teste. Podemos injetar objetos DataSource usando @Autowiredanotações .

@RunWith(SpringRunner.class)
@SpringBootTest
public class EmbeddedDatabaseBuilderTest {
    
    

    @Autowired
    private DataSource dataSource;

}
  1. Criar um banco de dados incorporado

No método de teste, precisamos criar o banco de dados incorporado usando EmbeddedDatabaseBuilder. Podemos criar um banco de dados embarcado com o seguinte código:

EmbeddedDatabase db = new EmbeddedDatabaseBuilder()
    .setType(EmbeddedDatabaseType.H2)
    .addScript("classpath:schema.sql")
    .addScript("classpath:data.sql")
    .build();

No exemplo acima, usamos o EmbeddedDatabaseBuilder()construtor para criar o banco de dados incorporado e usamos setType(EmbeddedDatabaseType.H2)o método para definir o tipo de banco de dados como H2. Também usamos addScript()o método para adicionar scripts para criar tabelas de banco de dados e inserir dados de teste.

  1. Executar o caso de teste

No método de teste, podemos usar o objeto DataSource para conectar ao banco de dados incorporado e executar instruções SQL. Podemos executar instruções SQL usando o objeto JdbcTemplate.

JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
List<Map<String, Object>> result = jdbcTemplate.queryForList("SELECT * FROM users");

No exemplo acima, usamos JdbcTemplateo objeto para conectar ao banco de dados incorporado e executar a instrução SQL. Usamos queryForList()o método para consultar a tabela do banco de dados e retornar o conjunto de resultados.

banco de dados de teste

No SpringBoot, podemos usar EmbeddedDatabaseBuilder para teste de integração de banco de dados para testar o comportamento do banco de dados. Abaixo vamos escrever um caso de teste para testar o banco de dados.

Primeiro, precisamos escrever um script SQL para criar tabelas de banco de dados e inserir dados de teste. Podemos criar schema.sqlum e um data.sqlarquivo para criar tabelas de banco de dados e inserir dados de teste.

schema.sqldocumento:

CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    email VARCHAR(255) NOT NULL UNIQUE
);

data.sqldocumento:

INSERT INTO users (id, name, email) VALUES
(1, 'John', '[email protected]'),
(2, 'Jane', '[email protected]'),
(3, 'Bob', '[email protected]');

Em seguida, escreveremos um caso de teste para testar o comportamento do banco de dados. Escreveremos casos de teste usando o framework JUnit.

@RunWith(SpringRunner.class)
@SpringBootTest
public class EmbeddedDatabaseBuilderTest {
    
    

    @Autowired
    private DataSource dataSource;

    @Test
    public void testEmbeddedDatabaseBuilder() {
    
    
        EmbeddedDatabase db = new EmbeddedDatabaseBuilder()
            .setType(EmbeddedDatabaseType.H2)
            .addScript("classpath:schema.sql")
            .addScript("classpath:data.sql")
            .build();

        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
        List<Map<String, Object>> result = jdbcTemplate.queryForList("SELECT * FROM users");

        assertEquals(3, result.size());
        assertEquals("John", result.get(0).get("name"));
        assertEquals("[email protected]", result.get(1).get("email"));

        db.shutdown();
    }
}

No exemplo acima, usamos o EmbeddedDatabaseBuilder para criar um banco de dados incorporado e nos conectar ao banco de dados para executar instruções SQL. Executamos a instrução SQL usando o objeto JdbcTemplate e comparamos os resultados esperados e reais para igualdade por meio de asserções.

Resumir

Neste artigo, apresentamos como usar EmbeddedDatabaseBuilder para teste de integração de banco de dados. O uso do EmbeddedDatabaseBuilder nos permite testar facilmente o comportamento do banco de dados sem realmente nos conectarmos ao banco de dados. Também escrevemos um caso de teste para testar o comportamento do banco de dados e usamos a estrutura JUnit para teste.

No desenvolvimento real, devemos escrever mais casos de teste para garantir que o banco de dados se comporte conforme o esperado. O uso do EmbeddedDatabaseBuilder pode nos ajudar a escrever casos de teste de banco de dados mais eficientes e precisos, melhorando assim a qualidade do código e a eficiência do desenvolvimento.

Acho que você gosta

Origin blog.csdn.net/it_xushixiong/article/details/131371902
Recomendado
Clasificación