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è)開發(fā)示例詳細(xì)講解
這篇文章主要介紹了SpringBoot Jpa企業(yè)開發(fā)示例,Jpa可以通過(guò)實(shí)體類生成數(shù)據(jù)庫(kù)的表,同時(shí)自帶很多增刪改查方法,大部分sql語(yǔ)句不需要我們自己寫,配置完成后直接調(diào)用方法即可,很方便2022-11-11PostMan post請(qǐng)求發(fā)送Json數(shù)據(jù)的方法
下面小編就為大家分享一篇PostMan post請(qǐng)求發(fā)送Json數(shù)據(jù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03java讀取圖片并轉(zhuǎn)化為二進(jìn)制字符串的實(shí)現(xiàn)方法
這篇文章主要介紹了java讀取圖片并轉(zhuǎn)化為二進(jìn)制字符串的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-09-09java并發(fā)數(shù)據(jù)包Exchanger線程間的數(shù)據(jù)交換器
這篇文章主要為大家介紹了java并發(fā)數(shù)據(jù)包使用數(shù)據(jù)交換器Exchanger來(lái)進(jìn)行線程之間的數(shù)據(jù)交換。有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-03-03SpringBoot中實(shí)現(xiàn)Redis?Stream隊(duì)列的代碼實(shí)例
本文介紹了如何在Spring?Boot中使用Redis?Stream隊(duì)列進(jìn)行消息的生產(chǎn)和消費(fèi),涉及到的主要內(nèi)容包括添加Redis依賴、配置RedisTemplate、創(chuàng)建生產(chǎn)者和消費(fèi)者監(jiān)聽器等,需要的朋友可以參考下2024-09-09