日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 单元测试_在springboot中写单元测试解决依赖注入和执行后事务回滚问题

發(fā)布時間:2024/8/23 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 单元测试_在springboot中写单元测试解决依赖注入和执行后事务回滚问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

往期文章

「Java并發(fā)編程」談談Java中的內(nèi)存模型JMM

面試官:說說你知道多少種線程池拒絕策略

為什么不要在MySQL中使用UTF-8編碼方式

前言

很多公司都有寫單元測試的硬性要求,在提交代碼的時候,如果單測通不過或者說單元測試各種覆蓋率不達標,會被拒絕合并代碼。寫單元測試,也是保證代碼質(zhì)量的一種方式。

junit單元測試

相信絕大多數(shù)的Java開發(fā)者都用過Junit來寫單元測試。

引入依賴:

junit junit 4.12

直接在方法上加上@Test注解即可:

加了@Test注解,就會有一個運行的圖標了。

spring的依賴問題

現(xiàn)在的Java開發(fā),基本上離不開spring了。但是使用spring,寫單測的時候就會存在一個依賴注入的問題。

假設有如下一個Service:

@Servicepublic class TestService {? public String getString() { return "Hello World!"; }?}

在Junit中直接自動裝配:

public class JunitTest {? @Autowired private TestService testService;? @Test public void test() { System.out.println(testService.getString()); }?}

運行報錯:

springboot寫單元測試

在springboot中,解決spring依賴問題,非常的簡單。只需要它提供的幾個注解即可:

引入依賴:

org.springframework.boot spring-boot-starter-test test

這里引入了一個spring-boot-starter-test依賴,是springboot中寫單測所需要的。

在單元測試類上添加@RunWith(SpringRunner.class)、@SpringBootTest注解:

這時候就可以正常的把spring依賴注入進來了,運行方法,可以看到springboot啟動時的輸出:

如果是通過spring initialize創(chuàng)建的springboot項目(本系列第一篇文章有講解),其實會自動創(chuàng)建一個單元測試類:

我們在寫單元測試的時候,直接繼承這個類即可。

單元測試事務回滾

寫單元測試,難免需要操作數(shù)據(jù)庫。有時候單元測試的數(shù)據(jù)庫跟開發(fā)時候的數(shù)據(jù)庫是同一個,為了不影響數(shù)據(jù)庫的數(shù)據(jù),需要在單測完成之后,將操作回滾。這在springboot中也是很容易解決的事情,只需要將單測類繼承AbstractTransactionalJUnit4SpringContextTests即可

數(shù)據(jù)庫有數(shù)據(jù)如下:

單元測試類如下:

測試方法如下:

@Testpublic void deleteAll() { userRepo.deleteAll();}

執(zhí)行方法后,如果事務不會滾,則會清除user表中的所有數(shù)據(jù)。

通過結(jié)果查看,單測運行沒有問題,查看數(shù)據(jù)庫:

數(shù)據(jù)也沒有被刪除,證明事務已經(jīng)回滾了。

把繼承的AbstractTransactionalJUnit4SpringContextTests類去掉,再次執(zhí)行deleteAll方法:

數(shù)據(jù)庫中的數(shù)據(jù)已被刪除

總結(jié)

本文介紹了springboot中寫單元測試的方法。其實優(yōu)雅的寫單元測試需要涉及到很多東西,比如mock(mockito、mockmvc等),本文都沒有涉及,有興趣的可以了解下。

總結(jié)

以上是生活随笔為你收集整理的java 单元测试_在springboot中写单元测试解决依赖注入和执行后事务回滚问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。