SpringBoot DBUnit 单元测试(小结)

 更新时间:2018年09月11日 10:26:29   作者:_Walli_  
这篇文章主要介绍了SpringBoot DBUnit 单元测试(小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

DBunit 是一种扩展于JUnit的数据库驱动测试框架,它使数据库在测试过程之间处于一种已知状态,如果一个测试用例对数据库造成了破坏性影响,它可以帮助避免造成后面的测试失败或者给出错误结果。

DBunit通过维护真实数据库与数据集(IDataSet)之间的关系来发现与暴露测试过程中的问题。IDataSet 代表一个或多个表的数据。此处IDataSet可以自建,可以由数据库导出,并以多种方式体现,xml文件、XLS文件和数据库查询数据等。

基于DBUnit 的测试的主要接口是IDataSet,可以将数据库模式的全部内容表示为单个IDataSet 实例。这些表本身由Itable 实例来表示。

1. pom文件配置

    <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
    </dependency>
    <dependency>
      <groupId>com.github.springtestdbunit</groupId>
      <artifactId>spring-test-dbunit</artifactId>
      <version>1.3.0</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.dbunit</groupId>
      <artifactId>dbunit</artifactId>
      <version>2.5.3</version>
    </dependency>

2. 由于spring-test-dbunit 的注解配置,导致 mockito 中的 @MockBean 失效,需要将 MockitoTestExecutionListener 和 DbUnitTestExecutionListener 配置到 @TestExecutionListeners 中

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@AutoConfigureMockMvc
@Transactional
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
@TestExecutionListeners({
  DependencyInjectionTestExecutionListener.class,
  DirtiesContextTestExecutionListener.class,
  TransactionalTestExecutionListener.class,
  MockitoTestExecutionListener.class,
  DbUnitTestExecutionListener.class
})
@DatabaseSetup("/test-data.xml")
public class OrderInfoControllerTest {
}

3. DBUnit 的数据文件 xml 中允在空值的配置

package com.test; 
import com.github.springtestdbunit.bean.DatabaseConfigBean;
import com.github.springtestdbunit.bean.DatabaseDataSourceConnectionFactoryBean;
import javax.sql.DataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
/**
 *
 * @author walli
 */
@Configuration
public class DBUnitConfiguration {
  
  private static final Logger LOGGER = LoggerFactory.getLogger(DBUnitConfiguration.class);
  
  @Bean
  public DatabaseConfigBean dbUnitDatabaseConfig() {
    DatabaseConfigBean bean = new DatabaseConfigBean();
    bean.setAllowEmptyFields(true);
    return bean;
  }
 
  @Bean
  public DatabaseDataSourceConnectionFactoryBean dbUnitDatabaseConnection(
      DatabaseConfigBean dbUnitDatabaseConfig,
      DataSource dataSource) {
    DatabaseDataSourceConnectionFactoryBean bean = new DatabaseDataSourceConnectionFactoryBean(dataSource);
    bean.setDatabaseConfig(dbUnitDatabaseConfig);
    
    return bean;
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 详解Java分布式缓存系统中必须解决的四大问题

    详解Java分布式缓存系统中必须解决的四大问题

    分布式缓存系统是三高架构中不可或缺的部分,极大地提高了整个项目的并发量、响应速度,但它也带来了新的需要解决的问题,分别是: 缓存穿透、缓存击穿、缓存雪崩和缓存一致性问题。本文将详细讲解一下这四大问题,需要的可以参考一下
    2022-04-04
  • java获取登录者IP和登录时间的两种实现代码详解

    java获取登录者IP和登录时间的两种实现代码详解

    这篇文章主要介绍了java获取登录者IP和登录时间的实现代码,本文通过两种结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • 详解JAVA如何实现乐观锁以及CAS机制

    详解JAVA如何实现乐观锁以及CAS机制

    悲观锁和乐观锁其实本质都是一种思想,在JAVA中对于悲观锁的实现大家可能都很了解,可以通过synchronized、ReentrantLock加锁实现,本文不展开讲解了。那么乐观锁在JAVA中是如何实现的呢?底层的实现机制又是什么呢?本文就来和大家详细讲讲
    2022-12-12
  • Java8加java10等于Java18的版本查看及特性详解

    Java8加java10等于Java18的版本查看及特性详解

    这篇文章主要为大家介绍了Java 8加java10等于Java18的各个版本要点详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Spring Boot 快速搭建微服务框架详细教程

    Spring Boot 快速搭建微服务框架详细教程

    SpringBoot是为了简化Spring应用的创建、运行、调试、部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置。本文重点给大家介绍Spring Boot 快速搭建微服务框架详细教程,需要的的朋友参考下吧
    2017-09-09
  • SpringMVC自定义拦截器登录检测功能的实现代码

    SpringMVC自定义拦截器登录检测功能的实现代码

    这篇文章主要介绍了SpringMVC自定义拦截器登录检测功能的实现,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • SpringBoot2 集成log4j2日志框架的实现

    SpringBoot2 集成log4j2日志框架的实现

    这篇文章主要介绍了SpringBoot2 集成log4j2日志框架的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Java模拟单链表和双端链表数据结构的实例讲解

    Java模拟单链表和双端链表数据结构的实例讲解

    这篇文章主要介绍了Java模拟单链表和双端链表数据结构的实例,注意这里的双端链表不是双向链表,是在单链表的基础上保存有对最后一个链接点的引用,需要的朋友可以参考下
    2016-04-04
  • Java 多个异常共享同一个异常处理器的方法

    Java 多个异常共享同一个异常处理器的方法

    这篇文章主要介绍了Java 多个异常共享同一个异常处理器的方法,Java 的异常处理机制,在 Java 7 中有了非常大的改进。其中一个特性就是,支持多个异常共享同一个异常处理器。,需要的朋友可以参考下
    2019-06-06
  • java 如何在list中删除我指定的对象

    java 如何在list中删除我指定的对象

    这篇文章主要介绍了java 如何在list中删除我指定的对象,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11

最新评论