欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring整合Junit的使用詳解

 更新時(shí)間:2020年02月07日 14:39:32   作者:Jokeronee  
這篇文章主要介紹了Spring整合Junit的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

我們?cè)诰帉懲闟pring的代碼后,往往需要測(cè)試代碼的正確性,這個(gè)時(shí)候就需要用到單元測(cè)試了。我們這里使用的版本是junit4.

一個(gè)程序的入口是main方法,但是junit中不存在main方法,是因?yàn)閖unit內(nèi)部的原理是它自己內(nèi)部就有個(gè)main方法,運(yùn)行掃描帶@Test注解的方法,然后反射調(diào)用該方法,完成測(cè)試。

調(diào)用Spring框架的測(cè)試代碼:

@Test
  public void function(){
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean.xml");
    AccountDao accountDao1 = applicationContext.getBean("AccountDao", AccountDao.class);
    accountDao1.findAll();
  }

我們發(fā)現(xiàn)這只是查詢,還有增刪改方法沒有測(cè)試,但是這幾個(gè)測(cè)試都有重復(fù)代碼塊,我們應(yīng)該把它們抽取出來

 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean.xml");
    AccountDao accountDao1 = applicationContext.getBean("AccountDao", AccountDao.class);

我們可以在外面定義一個(gè)全局變量,用來存儲(chǔ)accountDao的值,并且通過@Autowired注解實(shí)現(xiàn)注入對(duì)象,這樣每個(gè)方法就都可以使用它了.

@Autowired
private AccountDao accountDao;

但是這樣運(yùn)行之后會(huì)爆出空指針異常?。?!

這是因?yàn)镴unit默認(rèn)是不認(rèn)識(shí)Spring框架的,所以它內(nèi)部沒有IOC容器,這樣就算你有@Autowired這個(gè)注解,它也不知道從哪里注入數(shù)據(jù),所以就會(huì)有這個(gè)異常。

問題原因分析出來后,我們就想,能不能自己提供一個(gè)IOC容器呢,即

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean.xml");

往往在現(xiàn)實(shí)開發(fā)中,軟件開發(fā)和軟件測(cè)試是兩個(gè)職位,上述代碼如果是開發(fā)編寫的話,往往沒什么問題。但測(cè)試人員可能會(huì)不懂Spring的代碼,所以需要另外一種辦法,好在Spring為我們提供了整合Junit的使用。

首先引入Spring-test的jar坐標(biāo)

<dependency> 
<groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.1.5.RELEASE</version> 
<scope>test</scope> 
</dependency>

Spring給我們提供了一個(gè)main方法,這個(gè)main方法支持Spring框架,我們用這個(gè)main替換Junit的main方法。

@RunWith(SpringJUnit4ClassRunner.class)

在類上加上這個(gè)注解,@Runwith代表要替換的運(yùn)行器,后面在字節(jié)碼參數(shù)

告訴Spring配置文件/配置類的位置

@ContextConfiguration(locations = "classpath:bean.xml")

使用Contextfiguration注解可以完成該功能,locations表示配置文件的位置,加上classpath表示類路徑。

至此整合結(jié)束,測(cè)試方法直接使用既可,但是這里有個(gè)版本問題,如果你使用的是Spring5.0以上的話,你的Junit版本必須是4.12以上?。?!

不然會(huì)曝出

java.lang.ExceptionInInitializerError
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)

這個(gè)錯(cuò)誤

改完版本就可以正常運(yùn)行測(cè)試方法了。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • idea配置全局變量Jdk、maven倉(cāng)庫以及maven詳解(全文圖解)

    idea配置全局變量Jdk、maven倉(cāng)庫以及maven詳解(全文圖解)

    這篇文章主要給大家介紹了關(guān)于idea配置全局變量Jdk、maven倉(cāng)庫以及maven的相關(guān)資料,在配置JDK和Maven之前,需要確保已經(jīng)正確安裝了JDK和Maven,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • Java效率工具之Lombok的具體使用

    Java效率工具之Lombok的具體使用

    這篇文章主要介紹了Java效率工具之Lombok的具體使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 解決idea update project 更新選項(xiàng)消失的問題

    解決idea update project 更新選項(xiàng)消失的問題

    這篇文章主要介紹了解決idea update project 更新選項(xiàng)消失的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • Mybatis-Plus自動(dòng)填充的實(shí)現(xiàn)示例

    Mybatis-Plus自動(dòng)填充的實(shí)現(xiàn)示例

    這篇文章主要介紹了Mybatis-Plus自動(dòng)填充的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 基于多線程中join()的用法實(shí)例講解

    基于多線程中join()的用法實(shí)例講解

    下面小編就為大家?guī)硪黄诙嗑€程中join()的用法實(shí)例講解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • Spring框架實(shí)現(xiàn)文件上傳功能

    Spring框架實(shí)現(xiàn)文件上傳功能

    這篇文章主要為大家詳細(xì)介紹了Spring框架實(shí)現(xiàn)文件上傳功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Java學(xué)習(xí)筆記之觀察者模式

    Java學(xué)習(xí)筆記之觀察者模式

    這篇文章主要為大家詳細(xì)介紹了Java學(xué)習(xí)筆記之觀察者模式的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 微服務(wù)如何通過feign.RequestInterceptor傳遞參數(shù)

    微服務(wù)如何通過feign.RequestInterceptor傳遞參數(shù)

    這篇文章主要介紹了微服務(wù)如何通過feign.RequestInterceptor傳遞參數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • struts2實(shí)現(xiàn)簡(jiǎn)單文件下載功能

    struts2實(shí)現(xiàn)簡(jiǎn)單文件下載功能

    這篇文章主要為大家詳細(xì)介紹了struts2實(shí)現(xiàn)簡(jiǎn)單文件下載功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Spring?Cloud中Sentinel的兩種限流模式介紹

    Spring?Cloud中Sentinel的兩種限流模式介紹

    如何使用Sentinel做流量控制呢?這篇文章就來為大家詳細(xì)介紹了Spring?Cloud中Sentinel的兩種限流模式,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-05-05

最新評(píng)論