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

Java中單元測(cè)試框架JUnit知識(shí)點(diǎn)整理

 更新時(shí)間:2025年08月28日 10:30:42   作者:hqxstudying  
在Java開發(fā)中JUnit是最常用的單元測(cè)試框架之一,編寫JUnit測(cè)試的目的是確保代碼的正確性、可維護(hù)性和可擴(kuò)展性,這篇文章主要介紹了Java中單元測(cè)試框架JUnit知識(shí)點(diǎn)整理的相關(guān)資料,需要的朋友可以參考下

JUnit 是 Java 中最常用的單元測(cè)試框架,用于編寫和運(yùn)行可重復(fù)的測(cè)試。以下是 JUnit 的核心知識(shí)點(diǎn)整理:

1. JUnit 版本差異

  • JUnit 4:基于注解(如 @Test@Before),兼容 Java 5+
  • JUnit 5(Jupiter):是 JUnit 的新一代版本,包含三個(gè)子項(xiàng)目:
    • JUnit Platform:測(cè)試運(yùn)行平臺(tái)
    • JUnit Jupiter:新的編程模型和擴(kuò)展模型
    • JUnit Vintage:兼容 JUnit 4 和 3

2. 核心注解

JUnit 4 常用注解

  • @Test:標(biāo)記測(cè)試方法
  • @Before:每個(gè)測(cè)試方法執(zhí)行前運(yùn)行
  • @After:每個(gè)測(cè)試方法執(zhí)行后運(yùn)行
  • @BeforeClass:所有測(cè)試方法執(zhí)行前運(yùn)行(靜態(tài)方法)
  • @AfterClass:所有測(cè)試方法執(zhí)行后運(yùn)行(靜態(tài)方法)
  • @Ignore:忽略該測(cè)試方法

JUnit 5 新增注解

  • @Test:功能增強(qiáng),無(wú)需聲明異常
  • @BeforeEach:替代 JUnit 4 的 @Before
  • @AfterEach:替代 JUnit 4 的 @After
  • @BeforeAll:替代 JUnit 4 的 @BeforeClass
  • @AfterAll:替代 JUnit 4 的 @AfterClass
  • @Disabled:替代 @Ignore
  • @DisplayName:為測(cè)試類或方法設(shè)置可讀性名稱
  • @Nested:標(biāo)記嵌套測(cè)試類
  • @Tag:為測(cè)試打標(biāo)簽,用于篩選執(zhí)行
  • @ParameterizedTest:參數(shù)化測(cè)試(需配合參數(shù)源注解)

3. 斷言(Assertions)

用于驗(yàn)證測(cè)試結(jié)果是否符合預(yù)期。

JUnit 4

  • 主要使用 org.junit.Assert 類的靜態(tài)方法:
    assertEquals(expected, actual);  // 相等判斷
    assertTrue(condition);           // 驗(yàn)證為真
    assertFalse(condition);          // 驗(yàn)證為假
    assertNull(object);              // 驗(yàn)證為 null
    assertNotNull(object);           // 驗(yàn)證不為 null
    assertSame(expected, actual);    // 驗(yàn)證引用相同
    

JUnit 5

  • 斷言位于 org.junit.jupiter.api.Assertions
    • 功能類似,但支持 lambda 表達(dá)式延遲計(jì)算:
      assertEquals(expected, actual, () -> "自定義錯(cuò)誤消息");
      
    • 新增 assertAll() 支持批量斷言(所有斷言都會(huì)執(zhí)行):
      assertAll("用戶信息",
          () -> assertEquals("Alice", user.getName()),
          () -> assertEquals(30, user.getAge())
      );
      

4. 測(cè)試執(zhí)行順序

  • JUnit 4:默認(rèn)按方法名哈希排序,可通過(guò) @FixMethodOrder 控制
  • JUnit 5:默認(rèn)無(wú)序,可通過(guò) @TestMethodOrder 配合 MethodOrderer 控制(如按名稱、按注解順序等)

5. 參數(shù)化測(cè)試

允許使用不同參數(shù)多次運(yùn)行同一測(cè)試方法。

JUnit 5 實(shí)現(xiàn)

需配合參數(shù)源注解(如 @ValueSource、@CsvSource 等):

@ParameterizedTest
@ValueSource(strings = {"apple", "banana", "cherry"})
void testStringLength(String fruit) {
    assertTrue(fruit.length() > 3);
}

@ParameterizedTest
@CsvSource({"1, 2, 3", "4, 5, 9", "2, 3, 5"})
void testAdd(int a, int b, int expected) {
    assertEquals(expected, a + b);
}

6. 異常測(cè)試

驗(yàn)證方法是否拋出預(yù)期異常。

JUnit 4

@Test(expected = ArithmeticException.class)
public void testDivideByZero() {
    int result = 1 / 0;
}

JUnit 5

@Test
void testDivideByZero() {
    assertThrows(ArithmeticException.class, () -> {
        int result = 1 / 0;
    });
}

7. 超時(shí)測(cè)試

限制測(cè)試方法的執(zhí)行時(shí)間。

JUnit 4

@Test(timeout = 1000)  // 毫秒
public void testLongRunningMethod() {
    // 執(zhí)行耗時(shí)操作
}

JUnit 5

@Test
void testLongRunningMethod() {
    assertTimeout(Duration.ofSeconds(1), () -> {
        // 執(zhí)行耗時(shí)操作
    });
}

8. 嵌套測(cè)試(JUnit 5)

通過(guò) @Nested 注解創(chuàng)建嵌套測(cè)試類,增強(qiáng)測(cè)試結(jié)構(gòu)的可讀性:

class UserServiceTest {
    @Nested
    class WhenUserIsNew {
        @Test
        void shouldCreateUserSuccessfully() {
            // 測(cè)試邏輯
        }
    }
    
    @Nested
    class WhenUserExists {
        @Test
        void shouldThrowDuplicateException() {
            // 測(cè)試邏輯
        }
    }
}

9. 測(cè)試套件(Test Suite)

將多個(gè)測(cè)試類組合成一個(gè)套件執(zhí)行。

JUnit 4

@RunWith(Suite.class)
@Suite.SuiteClasses({UserTest.class, OrderTest.class})
public class AllTests {}

JUnit 5

@Suite
@SelectClasses({UserTest.class, OrderTest.class})
public class AllTests {}

10. 擴(kuò)展機(jī)制(JUnit 5)

通過(guò) Extension 接口實(shí)現(xiàn)自定義擴(kuò)展,如:

  • 測(cè)試前后的自定義邏輯
  • 參數(shù)注入
  • 異常處理等

11. 集成工具

  • 構(gòu)建工具:Maven(通過(guò) pom.xml)、Gradle 中配置 JUnit 依賴
  • IDE:IntelliJ IDEA、Eclipse 內(nèi)置支持 JUnit 測(cè)試運(yùn)行
  • CI/CD:可與 Jenkins、GitHub Actions 等集成,自動(dòng)執(zhí)行測(cè)試

掌握這些知識(shí)點(diǎn)可以幫助你編寫規(guī)范、高效的單元測(cè)試,提升代碼質(zhì)量和可維護(hù)性。實(shí)際使用中,JUnit 5 因其更靈活的特性,推薦作為首選版本。

總結(jié)

到此這篇關(guān)于Java中單元測(cè)試框架JUnit知識(shí)點(diǎn)整理的文章就介紹到這了,更多相關(guān)Java JUnit知識(shí)點(diǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot中的健康檢查詳解

    SpringBoot中的健康檢查詳解

    這篇文章主要介紹了SpringBoot中的健康檢查詳解,健康檢查是一種用來(lái)確保應(yīng)用程序和其所依賴的服務(wù)的狀態(tài)正常的機(jī)制,在本文中,我們將探討SpringBoot中的健康檢查是什么以及如何使用它來(lái)監(jiān)視應(yīng)用程序的狀態(tài),需要的朋友可以參考下
    2023-07-07
  • Java隨機(jī)生成姓名,手機(jī)號(hào),住址代碼示例

    Java隨機(jī)生成姓名,手機(jī)號(hào),住址代碼示例

    這篇文章主要介紹了Java隨機(jī)生成姓名,手機(jī)號(hào),住址代碼示例,屬于Java基礎(chǔ)方面的內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • java分布式面試CAP分別代表含義分析

    java分布式面試CAP分別代表含義分析

    這篇文章主要為大家介紹了java分布式面試中關(guān)于CAP分別代表含義的問(wèn)題分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • Java數(shù)組優(yōu)點(diǎn)和缺點(diǎn)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java數(shù)組優(yōu)點(diǎn)和缺點(diǎn)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    本文給大家簡(jiǎn)單介紹下java數(shù)組的優(yōu)點(diǎn)和缺點(diǎn)知識(shí),需要的的朋友參考下吧
    2017-04-04
  • 深入解析Java的設(shè)計(jì)模式編程中建造者模式的運(yùn)用

    深入解析Java的設(shè)計(jì)模式編程中建造者模式的運(yùn)用

    這篇文章主要介紹了深入解析Java的設(shè)計(jì)模式編程中建造者模式的運(yùn)用,同時(shí)文中也介紹了建造者模式與工廠模式的區(qū)別,需要的朋友可以參考下
    2016-02-02
  • Spring Security實(shí)現(xiàn)基于角色的訪問(wèn)控制框架

    Spring Security實(shí)現(xiàn)基于角色的訪問(wèn)控制框架

    Spring Security是一個(gè)功能強(qiáng)大的安全框架,提供了基于角色的訪問(wèn)控制、身份驗(yàn)證、授權(quán)等安全功能,可輕松保護(hù)Web應(yīng)用程序的安全,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-04-04
  • 使用Servlet Filter實(shí)現(xiàn)系統(tǒng)登錄權(quán)限

    使用Servlet Filter實(shí)現(xiàn)系統(tǒng)登錄權(quán)限

    這篇文章主要為大家詳細(xì)介紹了使用Servlet Filter實(shí)現(xiàn)系統(tǒng)登錄權(quán)限,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • Spring?Boot?lombok在高版本idea中注解不生效的解決辦法

    Spring?Boot?lombok在高版本idea中注解不生效的解決辦法

    這篇文章主要介紹了Spring?Boot?lombok在高版本idea中注解不生效的解決辦法,文中介紹了三種解決方案,分別是使用ptg插件生成方法、添加Lombok依賴或指定1.18.30版本并清除構(gòu)建配置,需要的朋友可以參考下
    2025-05-05
  • Java Web端程序?qū)崿F(xiàn)文件下載的方法分享

    Java Web端程序?qū)崿F(xiàn)文件下載的方法分享

    這篇文章主要介紹了Java Web端程序?qū)崿F(xiàn)文件下載的方法分享,包括一個(gè)包含防盜鏈功能的專門針對(duì)圖片下載的程序代碼示例,需要的朋友可以參考下
    2016-05-05
  • SpringBoot整合Gson 整合Fastjson的實(shí)例詳解

    SpringBoot整合Gson 整合Fastjson的實(shí)例詳解

    這篇文章主要介紹了SpringBoot整合Gson 整合Fastjson的實(shí)例詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11

最新評(píng)論