Java之Spring整合Junit
1 測(cè)試類中的問(wèn)題和解決思路
1.1 問(wèn)題
- 在測(cè)試類中,每個(gè)測(cè)試方法都有以下兩行代碼:
- ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
- IAccountService as = ac.getBean("accountService",IAccountService.class);
- 這兩行代碼的作用是獲取容器,如果不寫的話,直接會(huì)提示空指針異常。所以又不能輕易刪掉。
1.2 解決思路分析
- 針對(duì)上述問(wèn)題,需要的是程序能自動(dòng)創(chuàng)建容器。
- junit無(wú)法知曉是否使用了 spring 框架,無(wú)法創(chuàng)建 spring 容器了,但junit 暴露了一個(gè)注解,可以替換掉它的運(yùn)行器。
- 需要依靠 spring 框架提供的運(yùn)行器,可以讀取配置文件(或注解)來(lái)創(chuàng)建容器,只需要告訴它配置文件在哪就行了。
2 配置步驟
2.1 第一步:拷貝整合 junit 的必備 jar 包到 lib 目錄
- 此處需要注意的是,導(dǎo)入 jar 包時(shí),需要導(dǎo)入一個(gè) spring 中 aop 的 jar 包。
2.2 第二步:使用@RunWith 注解替換原有運(yùn)行器
@RunWith(SpringJUnit4ClassRunner.class) public class AccountServiceTest { }
2.3 第三步:使用@ContextConfiguration 指定 spring 配置文件的位置
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations= {"classpath:bean.xml"}) public class AccountServiceTest { }
- @ContextConfiguration 注解:
- locations 屬性:用于指定配置文件的位置。如果是類路徑下,需要用 classpath:表明
- classes 屬性:用于指定注解的類。當(dāng)不使用 xml 配置時(shí),需要用此屬性指定注解類的位置。
2.4 第四步:使用@Autowired 給測(cè)試類中的變量注入數(shù)據(jù)
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations= {"classpath:bean.xml"}) public class AccountServiceTest { @Autowired private IAccountService as ; }
3 不把測(cè)試類配到 xml 中的原因
- 第一:當(dāng)在 xml 中配置了一個(gè) bean,spring 加載配置文件創(chuàng)建容器時(shí),就會(huì)創(chuàng)建對(duì)象。
- 第二:測(cè)試類只是在測(cè)試功能時(shí)使用,而在項(xiàng)目中它并不參與程序邏輯,也不會(huì)解決需求上的問(wèn)題,所以創(chuàng)建完了,并沒(méi)有使用。那么存在容器中就會(huì)造成資源的浪費(fèi)。
到此這篇關(guān)于Java之Spring整合Junit的文章就介紹到這了,更多相關(guān)Spring整合Junit內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java SpringSecurity入門案例與基本原理詳解
這篇文章主要介紹了java中Spring Security的實(shí)例詳解的相關(guān)資料,spring security是一個(gè)多方面的安全認(rèn)證框架,提供了基于JavaEE規(guī)范的完整的安全認(rèn)證解決方案,需要的朋友可以參考下2021-09-09Mybatis之通用Mapper動(dòng)態(tài)表名及其原理分析
這篇文章主要介紹了Mybatis之通用Mapper動(dòng)態(tài)表名及其原理分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08Java反射之靜態(tài)加載和動(dòng)態(tài)加載的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇Java反射之靜態(tài)加載和動(dòng)態(tài)加載的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10SpringBoot數(shù)據(jù)訪問(wèn)的實(shí)現(xiàn)
本文主要介紹了SpringBoot數(shù)據(jù)訪問(wèn)的實(shí)現(xiàn),引入各種xxxTemplate,xxxRepository來(lái)簡(jiǎn)化我們對(duì)數(shù)據(jù)訪問(wèn)層的操作,感興趣的可以了解一下2023-11-11使用maven命令安裝jar包到本地倉(cāng)庫(kù)的方法步驟
這篇文章主要介紹了使用maven命令安裝jar包到本地倉(cāng)庫(kù)的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06