1. 概述
測試對於任何應用程序都至關重要,無論是以單元測試還是集成測試的形式。<em style="font-style: italic;">SpringRunner</em> 和 <em style="font-style: italic;">SpringBootTest</em> 類構成了運行集成測試的基礎。
在本教程中,我們將學習這兩種類的用法。我們將學習如何在代碼中使用它們,並瞭解它們之間的相似之處和不同之處。
2. SpringRunner
SpringRunner 是 SpringJUnit4ClassRunner 類別名,用於與基於 JUnit4 的測試類一起使用。它加載 Spring TestContext,通過該上下文,Spring 組件和配置可以與 JUnit 註解一起使用。 為了使用該類,我們需要使用 JUnit 4.12 或更高版本。
要在代碼中使用它,請使用 @RunWith(SpringRunner.class) 註解標記測試類:
@RunWith(SpringRunner.class)
public class SampleIntegrationTest {
@Test
public void test() {
//
}
}3. SpringBootTest
SpringBootTest 是 SpringRunner 的替代方案,並與 JUnit5 配合使用。
它還用於運行集成測試和加載 Spring 的 TestContext。
它非常豐富,通過其註解參數提供了許多配置。它支持多種 Web 環境模式,例如 MOCK, RANDOM_PORT, DEFINED_PORT 和 NONE。
我們可以通過注入到 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. 結論
在本文中,我們學習了 SpringRunner 和 SpringBootTest。我們學習瞭如何使用它們。我們還比較了它們,並瞭解了它們之間的差異和相似之處。
我們應該使用 SpringBootTest,因為它支持最新的 JUnit,但如果需要使用 JUnit 4,SpringRunner 是一個選項。