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

springboot集成測(cè)試最小化依賴(lài)實(shí)踐示例

 更新時(shí)間:2023年06月19日 10:35:19   作者:離線請(qǐng)留言  
這篇文章主要為大家介紹了springboot集成測(cè)試最小化依賴(lài)實(shí)踐示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

簡(jiǎn)介

想要代碼跑的穩(wěn), 集成測(cè)試還是必不可少的, 不然出現(xiàn)開(kāi)發(fā)環(huán)境正常, 集成環(huán)境各種問(wèn)題就坑爹了。

當(dāng)前項(xiàng)目對(duì)外提供各種rest接口, 通過(guò)RestTemplate做接口測(cè)試, 同時(shí)需要注入一些SpringBean, 如何使用SpringBootTest又不需要啟動(dòng)整個(gè)容器?

版本及依賴(lài)引入

springboot版本

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.7.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

項(xiàng)目部分依賴(lài)

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

直接使用SpringBootTest方式

代碼示例

@RunWith(SpringRunner.class)
// 默認(rèn)啟動(dòng)容器
@SpringBootTest
public class BdgResourceITest {
    @Autowired
    @Qualifier(value = "iTestRestTemplate")
    private RestTemplate restTemplate;
    @Test
    public void testPull() throws URISyntaxException {
        // /pull/{mof_div_code}/{fiscal_year}/{agency_code}
        String url = "/api/pull/340000000/2022/001001";
        final ResponseEntity<ResponseData> exchange = restTemplate.exchange(
                RequestEntity.get(new URI(url)).build(), ResponseData.class);
        Assert.isTrue(exchange.getStatusCode().equals(HttpStatus.OK), "本單位數(shù)據(jù)獲取異常");
    }
}

場(chǎng)景及優(yōu)劣

優(yōu)勢(shì)

如果是測(cè)試類(lèi)中大量引入了依賴(lài), 這種情況下直接啟動(dòng)容器比較方便, 不過(guò)集成測(cè)試個(gè)人感覺(jué)從入口訪問(wèn)即可, 這種嵌套比較深的建議使用單元測(cè)試

劣勢(shì)

當(dāng)前項(xiàng)目中測(cè)試代碼需要依賴(lài)很少, 極端情況下只用restTemplate即可, 根本沒(méi)必要啟動(dòng)容器, 而且啟動(dòng)容器占用了大量時(shí)間

項(xiàng)目中使用了ehcache3.x作為本地緩存, 啟動(dòng)容器后因?yàn)槲募i無(wú)法測(cè)試, 如果單獨(dú)指定ehcache.xml配置, 又會(huì)產(chǎn)生新的垃圾, 所以果斷減少依賴(lài)

最小化依賴(lài)方案

代碼

@RunWith(SpringRunner.class)
// 指定class就不啟動(dòng)容器了
@SpringBootTest(classes = BdgResourceITest.class)
@Import(value = {ITestRestTemplateConfigurer.class})
// 激活 main 中resources下的test profile
//@ActiveProfiles("dev")
// 加載測(cè)試目錄resources下的application.yml文件
//@TestPropertySource(properties = {"spring.config.location=classpath:application.yml"})
public class BdgResourceITest {
    @Autowired
    @Qualifier(value = "iTestRestTemplate")
    private RestTemplate restTemplate;
    @Test
    public void testPull() throws URISyntaxException {
        // /pull/{mof_div_code}/{fiscal_year}/{agency_code}
        String url = "/api/pull/340000000/2022/001001";
        final ResponseEntity<ResponseData> exchange = restTemplate.exchange(
                RequestEntity.get(new URI(url)).build(), ResponseData.class);
        Assert.isTrue(exchange.getStatusCode().equals(HttpStatus.OK), "本單位數(shù)據(jù)獲取異常");
    }
}

思路及步驟

通過(guò)指定SpringBootTest的classes, 只啟動(dòng)當(dāng)前類(lèi),如果需要注入其它bean, 則使用@import進(jìn)行引入

如果import內(nèi)部的類(lèi)也也需要引入其它類(lèi), 同理根據(jù)需要使用@Import注解, 這樣產(chǎn)生的代碼更加聚合, 所然在當(dāng)前類(lèi)可以全部@Import, 但是看著頭疼

對(duì)于需要引入yml配置信息的,可以配合@EnableConfigurationProperties讀取測(cè)試目錄下的application.yml文件

最小化依賴(lài)方案的優(yōu)點(diǎn)

減少了容器啟動(dòng)時(shí)間, 對(duì)于當(dāng)前項(xiàng)目更加符合實(shí)際的使用場(chǎng)景, 畢竟第三方使用不可能啟動(dòng)你自己的容器:D

更加優(yōu)雅的解決了ehcache同時(shí)被容器掃描啟動(dòng), 本地文件鎖導(dǎo)致測(cè)試無(wú)法運(yùn)行, 實(shí)際測(cè)試代碼根本不需要緩存, 項(xiàng)目服務(wù)有就行

測(cè)試代碼也更加簡(jiǎn)單優(yōu)雅, 可以直接提供第三方公司作為接口請(qǐng)求示例代碼

結(jié)論

如果集成測(cè)試的場(chǎng)景類(lèi)似當(dāng)前項(xiàng)目情況, 全部測(cè)試都從rest接口入手, 建議采用最小容器依賴(lài)方案

以上就是springboot集成測(cè)試最小化依賴(lài)實(shí)踐示例的詳細(xì)內(nèi)容,更多關(guān)于springboot集成測(cè)試依賴(lài)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 使用SpringBoot配置多數(shù)據(jù)源的經(jīng)驗(yàn)分享

    使用SpringBoot配置多數(shù)據(jù)源的經(jīng)驗(yàn)分享

    這篇文章主要介紹了使用SpringBoot配置多數(shù)據(jù)源的經(jīng)驗(yàn)分享,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • Java中覆蓋finalize()方法實(shí)例代碼

    Java中覆蓋finalize()方法實(shí)例代碼

    這篇文章主要介紹了Java中覆蓋finalize()方法實(shí)例代碼,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • Servlet中/和/*的區(qū)別詳解

    Servlet中/和/*的區(qū)別詳解

    本文將分析/和/*的區(qū)別這個(gè)老生常談的問(wèn)題,但是很多時(shí)候看完就忘了,關(guān)于此問(wèn)題這一篇文章就夠了,它將成為你的永久記憶,感興趣的可以了解一下
    2021-07-07
  • Spring Boot實(shí)現(xiàn)對(duì)文件進(jìn)行壓縮下載功能

    Spring Boot實(shí)現(xiàn)對(duì)文件進(jìn)行壓縮下載功能

    在Web應(yīng)用中,文件下載功能是一個(gè)常見(jiàn)的需求,特別是當(dāng)你需要提供用戶(hù)下載各種類(lèi)型的文件時(shí),本文將演示如何使用Spring Boot框架來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單而強(qiáng)大的文件下載功能,需要的朋友跟隨小編一起學(xué)習(xí)吧
    2023-09-09
  • Spring中@DependsOn注解的作用及實(shí)現(xiàn)原理解析

    Spring中@DependsOn注解的作用及實(shí)現(xiàn)原理解析

    這篇文章主要介紹了Spring中@DependsOn注解的作用及實(shí)現(xiàn)原理解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • 基于spring security實(shí)現(xiàn)登錄注銷(xiāo)功能過(guò)程解析

    基于spring security實(shí)現(xiàn)登錄注銷(xiāo)功能過(guò)程解析

    這篇文章主要介紹了基于spring security實(shí)現(xiàn)登錄注銷(xiāo)功能過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Mybatis示例之SelectKey的應(yīng)用

    Mybatis示例之SelectKey的應(yīng)用

    今天小編就為大家分享一篇關(guān)于Mybatis示例之SelectKey的應(yīng)用,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • SpringBoot2線程池定義使用方法解析

    SpringBoot2線程池定義使用方法解析

    這篇文章主要介紹了SpringBoot2線程池定義使用方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 一文詳解Java項(xiàng)目中如何優(yōu)雅的使用枚舉類(lèi)型

    一文詳解Java項(xiàng)目中如何優(yōu)雅的使用枚舉類(lèi)型

    枚舉類(lèi)型在開(kāi)發(fā)中是很常見(jiàn)的,有非常多的應(yīng)用場(chǎng)景,這篇文章我們就來(lái)學(xué)習(xí)一下項(xiàng)目中如何優(yōu)雅的使用枚舉類(lèi)型,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • RequestContextHolder.getRequestAttributes()空指針問(wèn)題及解決

    RequestContextHolder.getRequestAttributes()空指針問(wèn)題及解決

    這篇文章主要介紹了RequestContextHolder.getRequestAttributes()空指針問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01

最新評(píng)論