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ù)查詢(xún)數(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常見(jiàn)get/post請(qǐng)求參數(shù)處理、參數(shù)注解校驗(yàn)及參數(shù)自定義注解校驗(yàn)詳解
這篇文章主要給大家介紹了關(guān)于SpringBoot常見(jiàn)get/post請(qǐng)求參數(shù)處理、參數(shù)注解校驗(yàn)及參數(shù)自定義注解校驗(yàn)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03
Spring系列中的beanFactory與ApplicationContext
這篇文章主要介紹了Spring系列中的beanFactory與ApplicationContext,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09
Java Servlet中Response對(duì)象的使用方法
本文介紹了Java Servlet中Response對(duì)象的使用方法,包括設(shè)置響應(yīng)頭、設(shè)置響應(yīng)編碼、向客戶(hù)端發(fā)送數(shù)據(jù)、重定向等操作,同時(shí)介紹了常用的響應(yīng)狀態(tài)碼和響應(yīng)類(lèi)型,幫助讀者更好地理解和掌握Servlet中Response對(duì)象的用法2023-05-05
Spring中自帶的@Schedule實(shí)現(xiàn)自動(dòng)任務(wù)的過(guò)程解析
這篇文章主要介紹了關(guān)于Spring中自帶的@Schedule實(shí)現(xiàn)自動(dòng)任務(wù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06
mybatis?log4j2打印sql+日志實(shí)例代碼
在學(xué)習(xí)mybatis的時(shí)候,如果用log4j2來(lái)協(xié)助查看調(diào)試信息,則會(huì)大大提高學(xué)習(xí)的效率,加快debug速度,下面這篇文章主要給大家介紹了關(guān)于mybatis?log4j2打印sql+日志的相關(guān)資料,需要的朋友可以參考下2022-08-08
Java8新的異步編程方式CompletableFuture實(shí)現(xiàn)
這篇文章主要介紹了Java8新的異步編程方式CompletableFuture實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-04-04
IDEA JAVA項(xiàng)目熱加載的實(shí)現(xiàn)步驟
熱加載可以使代碼修改后無(wú)須重啟服務(wù)器,就可以加載更改的代碼,本文主要介紹了IDEA JAVA項(xiàng)目熱加載的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2023-06-06

