知識庫 / Spring / Spring Boot RSS 訂閱

SpringRunner 與 SpringBootTest

Spring Boot,Testing
HongKong
7
11:25 AM · Dec 06 ,2025

1. 概述

測試對於任何應用程序都至關重要,無論是以單元測試還是集成測試的形式。<em style="font-style: italic;">SpringRunner</em><em style="font-style: italic;">SpringBootTest</em> 類構成了運行集成測試的基礎。

在本教程中,我們將學習這兩種類的用法。我們將學習如何在代碼中使用它們,並瞭解它們之間的相似之處和不同之處。

2. SpringRunner

SpringRunnerSpringJUnit4ClassRunner 類別名,用於與基於 JUnit4 的測試類一起使用。它加載 Spring TestContext,通過該上下文,Spring 組件和配置可以與 JUnit 註解一起使用。 為了使用該類,我們需要使用 JUnit 4.12 或更高版本。

要在代碼中使用它,請使用 @RunWith(SpringRunner.class) 註解標記測試類:

@RunWith(SpringRunner.class)
public class SampleIntegrationTest {

    @Test
    public void test() {
        //
    }
}

3. SpringBootTest

SpringBootTestSpringRunner 的替代方案,並與 JUnit5 配合使用。

它還用於運行集成測試和加載 Spring 的 TestContext

它非常豐富,通過其註解參數提供了許多配置。它支持多種 Web 環境模式,例如 MOCK, RANDOM_PORT, DEFINED_PORTNONE

我們可以通過注入到 Spring 環境中的註解將應用程序屬性傳遞給它,在測試運行之前:

@SpringBootTest(
  properties = {"user.name=test_user"},
  webEnvironment = MOCK)
public class SampleIntegrationTest {

    @Test
    public void test() {
        //
    }
}

註解 @SpringBootTest 需要在類級別上進行,才能運行集成測試。

4. SpringRunner 與 SpringBootTest 的比較

本表將比較這兩個類及其優缺點。

SpringRunner SpringBootTest
用於運行集成測試並加載 Spring TestContext 用於運行集成測試並加載 Spring TestContext
可使用 JUnit 4.12 或更高版本 需要 JUnit 5 或更高版本
並非具有豐富的配置 API 提供豐富的配置測試配置 API
不推薦使用 推薦使用,因為它支持新功能且易於使用

5. 結論

在本文中,我們學習了 SpringRunnerSpringBootTest。我們學習瞭如何使用它們。我們還比較了它們,並瞭解了它們之間的差異和相似之處。

我們應該使用 SpringBootTest,因為它支持最新的 JUnit,但如果需要使用 JUnit 4,SpringRunner 是一個選項。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.