偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

徹底告別繁瑣配置!Spring Boot 3.4 一行代碼搞定 Testcontainers 集成測(cè)試

開發(fā) 前端
在現(xiàn)代 Java 開發(fā)中,**測(cè)試容器(Testcontainers)**已成為編寫高質(zhì)量集成測(cè)試的標(biāo)配工具。而從?Spring Boot 3.4?開始,官方提供了對(duì) Testcontainers 的?自動(dòng)裝配支持,極大地降低了測(cè)試配置的復(fù)雜度。

在現(xiàn)代 Java 開發(fā)中,**測(cè)試容器(Testcontainers)**已成為編寫高質(zhì)量集成測(cè)試的標(biāo)配工具。而從 Spring Boot 3.4 開始,官方提供了對(duì) Testcontainers 的 自動(dòng)裝配支持,極大地降低了測(cè)試配置的復(fù)雜度。同時(shí),結(jié)合 @SpringBootTest 的 properties 屬性,我們可以更靈活地進(jìn)行配置覆蓋,真正做到測(cè)試用例隔離、環(huán)境獨(dú)立。

本文將帶你通過(guò)一個(gè) PostgreSQL 數(shù)據(jù)庫(kù)的集成測(cè)試案例,全面體驗(yàn)這兩項(xiàng)功能的魅力。

環(huán)境準(zhǔn)備:所需依賴

為了使用上述功能,你需要在 pom.xml 中添加如下依賴:

<dependencies>
<!-- Spring Boot Test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

<!-- Testcontainers PostgreSQL -->
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>postgresql</artifactId>
<version>1.19.0</version>
<scope>test</scope>
</dependency>

<!-- Testcontainers JUnit 5 支持 -->
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>junit-jupiter</artifactId>
<version>1.19.0</version>
<scope>test</scope>
</dependency>
</dependencies>

Testcontainers 無(wú)需手動(dòng)配置 DataSource,開箱即用!

在 Spring Boot 3.4 之前,我們通常需要手動(dòng)指定數(shù)據(jù)源屬性或通過(guò) @DynamicPropertySource動(dòng)態(tài)注入數(shù)據(jù)庫(kù) URL、用戶名、密碼等信息。但現(xiàn)在,只需引入依賴并標(biāo)注 @Testcontainers,Spring Boot 就會(huì)自動(dòng)感知并配置容器數(shù)據(jù)源。

? 示例代碼如下:

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.testcontainers.containers.PostgreSQLContainer;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;


@SpringBootTest
@Testcontainers
class DemoIntegrationTest {


    // 聲明 PostgreSQL 容器并指定版本
    @Container
    static PostgreSQLContainer<?> postgres = new PostgreSQLContainer<>("postgres:15");


    @Test
    void testDb() {
        // Spring Boot 3.4 會(huì)自動(dòng)識(shí)別容器,并注入 DataSource
        // 可直接進(jìn)行數(shù)據(jù)庫(kù)操作,無(wú)需手動(dòng)配置
        System.out.println("容器數(shù)據(jù)庫(kù) URL: " + postgres.getJdbcUrl());
    }
}

核心說(shuō)明:

  • @Container標(biāo)記 Testcontainers 的容器實(shí)例,生命周期自動(dòng)管理。
  • @SpringBootTest整合 Spring 應(yīng)用上下文,配合自動(dòng)注入。
  • 無(wú)需再通過(guò) @DynamicPropertySource 顯式配置 spring.datasource.url 等屬性,Spring Boot 會(huì)自動(dòng)為你完成注入。

@SpringBootTest(properties = {}) 靈活覆蓋配置

除了容器自動(dòng)配置外,Spring Boot 還允許你通過(guò) @SpringBootTest(properties = {}) 快速覆蓋配置文件中的內(nèi)容。這非常適用于功能切換、資源控制、環(huán)境隔離等場(chǎng)景。

示例代碼如下:

@SpringBootTest(properties = {
    "app.feature.enabled=true",
    "app.max-connections=100"
})
class FeatureToggleTest {


    @Test
    void testFeatureEnabled() {
        // 可在這里驗(yàn)證 feature 功能是否啟用,或根據(jù)連接數(shù)邏輯做斷言
        System.out.println("功能開關(guān)測(cè)試已啟用");
    }
}

實(shí)用場(chǎng)景:

  • 功能開關(guān)測(cè)試:測(cè)試某個(gè)功能開啟/關(guān)閉時(shí)系統(tǒng)行為。
  • 性能邊界測(cè)試:如最大連接數(shù)限制等。
  • 避免污染全局配置:測(cè)試之間互不干擾,配置透明。

結(jié)語(yǔ):Spring Boot 3.4 帶來(lái)的測(cè)試體驗(yàn)質(zhì)變升級(jí)

Spring Boot 3.4 與 Testcontainers 的深度整合,大幅度簡(jiǎn)化了測(cè)試容器的使用流程,開發(fā)者可以更專注于業(yè)務(wù)邏輯測(cè)試本身。而 @SpringBootTest(properties = {}) 則提供了一個(gè)干凈、靈活的配置隔離方案,使得測(cè)試更易維護(hù)、更可控。

如果你還在為復(fù)雜的測(cè)試環(huán)境配置煩惱,不妨嘗試一下 Spring Boot 3.4 的這些新特性,相信你會(huì)愛(ài)上它的簡(jiǎn)潔與強(qiáng)大。

責(zé)任編輯:武曉燕 來(lái)源: 路條編程
相關(guān)推薦

2024-05-31 14:04:18

2025-02-17 00:00:45

接口支付寶沙箱

2025-02-12 09:55:01

Java代碼性能

2021-02-24 14:30:59

JavaScript語(yǔ)言開發(fā)

2023-11-10 09:41:44

Python代碼

2025-04-09 11:20:00

LINQ代碼數(shù)據(jù)處理

2024-09-18 06:10:00

條件表達(dá)式判斷代碼Python

2022-02-24 10:40:14

Python代碼

2023-09-13 15:09:35

軟件開發(fā)數(shù)字化進(jìn)程

2025-06-12 03:10:00

2016-12-02 08:53:18

Python一行代碼

2025-05-09 08:00:00

JavaScript代碼防抖節(jié)流

2025-04-27 04:00:00

錯(cuò)誤頁(yè)Spring底層

2021-10-29 10:38:20

代碼 PILPython

2025-03-11 03:00:00

2022-06-23 08:42:08

配置加密解密

2025-02-17 07:48:45

2025-04-08 08:01:31

2024-12-30 08:10:00

C++17代碼文件
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)