好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

SpringBoot DBUnit 单元测试(小结)

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

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

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

1. pom文件配置

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<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 中

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

@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 中允在空值的配置

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

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;

   }

}

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

原文链接:https://blog.csdn.net/zxcvqwer19900720/article/details/80106758

查看更多关于SpringBoot DBUnit 单元测试(小结)的详细内容...

  阅读:48次