SpringBoot DBUnit 單元測(cè)試(小結(jié))
DBunit 是一種擴(kuò)展于JUnit的數(shù)據(jù)庫(kù)驅(qū)動(dòng)測(cè)試框架,它使數(shù)據(jù)庫(kù)在測(cè)試過(guò)程之間處于一種已知狀態(tài),如果一個(gè)測(cè)試用例對(duì)數(shù)據(jù)庫(kù)造成了破壞性影響,它可以幫助避免造成后面的測(cè)試失敗或者給出錯(cuò)誤結(jié)果。
DBunit通過(guò)維護(hù)真實(shí)數(shù)據(jù)庫(kù)與數(shù)據(jù)集(IDataSet)之間的關(guān)系來(lái)發(fā)現(xiàn)與暴露測(cè)試過(guò)程中的問(wèn)題。IDataSet 代表一個(gè)或多個(gè)表的數(shù)據(jù)。此處IDataSet可以自建,可以由數(shù)據(jù)庫(kù)導(dǎo)出,并以多種方式體現(xiàn),xml文件、XLS文件和數(shù)據(jù)庫(kù)查詢數(shù)據(jù)等。
基于DBUnit 的測(cè)試的主要接口是IDataSet,可以將數(shù)據(jù)庫(kù)模式的全部?jī)?nèi)容表示為單個(gè)IDataSet 實(shí)例。這些表本身由Itable 實(shí)例來(lái)表示。
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 的注解配置,導(dǎo)致 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 的數(shù)據(jù)文件 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;
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Springboot Mybatis-Plus數(shù)據(jù)庫(kù)單元測(cè)試實(shí)戰(zhàn)(三種方式)
- 詳解在SpringBoot中使用MongoDb做單元測(cè)試的代碼
- Springboot集成JUnit5優(yōu)雅進(jìn)行單元測(cè)試的示例
- 使用@SpringBootTest注解進(jìn)行單元測(cè)試
- springboot單元測(cè)試兩種方法實(shí)例詳解
- SpringBoot 單元測(cè)試JUnit的使用詳解
- SpringBoot2種單元測(cè)試方法解析
- SpringBoot Controller Post接口單元測(cè)試示例
- SpringBoot MockMvc單元測(cè)試的示例代碼
- 詳解SpringBoot項(xiàng)目的創(chuàng)建與單元測(cè)試
相關(guān)文章
SpringBoot Jpa企業(yè)開(kāi)發(fā)示例詳細(xì)講解
這篇文章主要介紹了SpringBoot Jpa企業(yè)開(kāi)發(fā)示例,Jpa可以通過(guò)實(shí)體類(lèi)生成數(shù)據(jù)庫(kù)的表,同時(shí)自帶很多增刪改查方法,大部分sql語(yǔ)句不需要我們自己寫(xiě),配置完成后直接調(diào)用方法即可,很方便2022-11-11
PostMan post請(qǐng)求發(fā)送Json數(shù)據(jù)的方法
下面小編就為大家分享一篇PostMan post請(qǐng)求發(fā)送Json數(shù)據(jù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03
java讀取圖片并轉(zhuǎn)化為二進(jìn)制字符串的實(shí)現(xiàn)方法
這篇文章主要介紹了java讀取圖片并轉(zhuǎn)化為二進(jìn)制字符串的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-09-09
java并發(fā)數(shù)據(jù)包Exchanger線程間的數(shù)據(jù)交換器
這篇文章主要為大家介紹了java并發(fā)數(shù)據(jù)包使用數(shù)據(jù)交換器Exchanger來(lái)進(jìn)行線程之間的數(shù)據(jù)交換。有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-03-03
SpringBoot中實(shí)現(xiàn)Redis?Stream隊(duì)列的代碼實(shí)例
本文介紹了如何在Spring?Boot中使用Redis?Stream隊(duì)列進(jìn)行消息的生產(chǎn)和消費(fèi),涉及到的主要內(nèi)容包括添加Redis依賴(lài)、配置RedisTemplate、創(chuàng)建生產(chǎn)者和消費(fèi)者監(jiān)聽(tīng)器等,需要的朋友可以參考下2024-09-09

