文章目錄
- 前言
- 一、JUnit描述(引入Maven)
- 二、基本API+注解
- 2.1、Assert類
- 2.2、JUnit注解
- 三、普通單元測試
- 3.1、BeforeClass、AfterClass、Before、After、Test合集測試
- 四、SpringBoot單元測試
- 4.1、SpringBoot集成Junit介紹
- 4.2、實戰:SpringBoot項目添加功能測試類
- 參考文章
- 資料獲取
前言
博主介紹:?目前全網粉絲4W+,csdn博客專家、Java領域優質創作者,博客之星、阿里云平臺優質作者、專注于Java后端技術領域。
涵蓋技術內容:Java后端、大數據、算法、分布式微服務、中間件、前端、運維等。
博主所有博客文件目錄索引:博客目錄索引(持續更新)
CSDN搜索:長路
視頻平臺:b站-Coder長路
一、JUnit描述(引入Maven)
JUnit是一種Java語言的單元測試框架,它是最流行的單元測試框架之一。它提供了一些可用于編寫和運行測試的API,并且可以生成測試報告。JUnit適用于所有Java語言的項目,例如Java應用程序、Java Servlet、Java EE應用程序以及Android應用程序等。
依賴版本
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope>
</dependency>
二、基本API+注解
2.1、Assert類
Assert是JUnit框架提供的一個斷言類,用于驗證測試結果和預期結果是否相符。我們可以使用Assert類來編寫斷言代碼,從而保證測試的正確性和可靠性。
- assertEquals(expected, actual):驗證兩個值是否相等,如果不相等則拋出AssertionError異常。
- assertNotEquals(expected, actual):驗證兩個值是否不相等,如果相等則拋出AssertionError異常。
- assertTrue(condition):驗證給定的條件是否為true,如果不是則拋出AssertionError異常。
- assertFalse(condition):驗證給定的條件是否為false,如果不是則拋出AssertionError異常。
- assertNull(object):驗證給定對象是否為空(null),如果不為空則拋出AssertionError異常。
- assertNotNull(object):驗證給定對象是否不為空(null),如果為空則拋出AssertionError異常。
- assertArrayEquals(expected, actual):驗證兩個數組是否相等,如果不相等則拋出AssertionError異常。
- assertSame(expected, actual):驗證兩個對象是否相等,如果不相等則拋出AssertionError異常。
- assertNotSame(notExpected, actual):驗證兩個對象是否不相等,如果相等則拋出AssertionError異常。
斷言方法的第一個參數通常是預期值(expected),而第二個參數則是實際值(actual)。
2.2、JUnit注解
所有的注解如下:
- @Test:這是JUnit最重要的注解之一,它被用來標記測試方法。JUnit會執行所有帶有@Test注解的方法,以驗證代碼的正確性。
- @Before:在每個測試方法執行之前該注解所標注的方法會被執行。通常,這個注解可以用于初始化測試數據和資源。
- @After:在每個測試方法執行之后該注解所標注的方法會被執行。通常,這個注解可以用于清理測試數據和資源。
- @BeforeClass:在整個測試類中只執行一次,在執行測試用例之前該注解所標注的方法會被執行,且這個方法必須是靜態方法,也就是這個方法會在類加載時執行。通常,這個注解可以用于初始化靜態數據和資源。
- @AfterClass:在整個測試類中只執行一次,在執行測試用例之后該注解所標注的方法會被執行,同樣,這個方法必須是靜態方法。通常,這個注解可以用于清理靜態數據和資源。
- @Ignore:該注解表示忽略某個測試方法,不會執行該方法。通常,這個注解可以用于臨時禁用某個測試用例。
- @RunWith:該注解定義測試運行器,JUnit默認使用BlockJUnit4ClassRunner作為測試運行器。如果需要使用其他運行器,可以在注解中指定。【一般配合springboot】
- @Parameters:該注解可以用于動態參數化測試方法,使測試方法能夠接受不同的輸入參數。
- @Rule:該注解定義測試規則(Test Rule),可以在測試方法執行前后實施某些操作,如超時控制、異常檢測等。
- @ClassRule:類似于@Rule,但是粒度更大,可以對整個測試類進行規則控制。
三、普通單元測試
3.1、BeforeClass、AfterClass、Before、After、Test合集測試
說明:主要研究下所有單元測試注解的生命周期。
- BeforeClass、AfterClass:整個完整測試過程中各自只執行一次。【類級別】
- Before、After:對于每一個Test方法都會提前或最終執行一次。【方法級】
package com.changlu;
import org.junit.*;public class MainTest {@BeforeClasspublic static void beforeClass() {System.out.println("BeforeClass");}@AfterClasspublic static void afterClass() {System.out.println("afterClass");}@Beforepublic void before() {System.out.println("-----------");System.out.println("before");}@Afterpublic void After() {System.out.println("After");System.out.println("-----------");}@Testpublic void testCon1() {//斷言驗證為true,測試通過Assert.assertTrue(true);System.out.println("testCon1");}@Testpublic void testCon2() {//斷言驗證為true,測試通過Assert.assertTrue(true);System.out.println("testCon2");}
}
運行結果:
四、SpringBoot單元測試
4.1、SpringBoot集成Junit介紹
Springboot集成JUnit寫單元測試類需要使用RunWith注解,這個注解需要一個值,測試運行器。
測試運行器(Test Runner)是JUnit框架提供的一個核心組件,用于執行測試類中的測試方法并生成測試報告。JUnit提供了多個測試運行器,不同的運行器可以根據不同的需求來選擇使用。
- JUnit4:JUnit4是JUnit框架的主流版本,支持使用注解方式進行測試。我們一般會選擇使用@RunWith(JUnit4.class)運行器來執行測試用例。
- SpringRunner:SpringRunner是Spring Boot Test框架中提供的測試運行器,用于執行集成測試和端到端測試等。可以使用@RunWith(SpringRunner.class)運行器來啟動Spring Boot上下文環境,并進行測試。
- Parameterized:Parameterized是JUnit提供的一個參數化測試運行器,可以讓我們在單元測試中重復運行相同的測試方法,并對方法參數進行變量化處理。
- Theories:Theories是JUnit提供的一個更加高級的參數化測試運行器,可以生成隨機數據、枚舉值、自定義輸入等多種方式來測試方法的正確性。
- Suite:Suite運行器可以將多個測試類組合成一組測試用例,方便批量執行和管理測試用例。
4.2、實戰:SpringBoot項目添加功能測試類
引入JUnit依賴:
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope>
</dependency>
import com.team.order.FoodOrderSpringBootApplication;
import com.team.order.service.CaipinService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;/*** @description 創建測試類單元測試* @date 2024/4/19 15:33*/
@SpringBootTest(classes = FoodOrderSpringBootApplication.class)
@RunWith(SpringRunner.class)
public class MainTest {@Autowiredprivate CaipinService caipinService;@Testpublic void testCaipin() {System.out.println(caipinService.selectList(null));}}
運行結果如下:
參考文章
[1]. JUnit單元測試:https://blog.csdn.net/weixin_44084024/article/details/130204119
[2]. 【SpringBoot應用篇】SpringBoot集成JUnit單元測試:https://blog.csdn.net/qq_45297578/article/details/118935974
資料獲取
大家點贊、收藏、關注、評論啦~
精彩專欄推薦訂閱:在下方專欄👇🏻
- 長路-文章目錄匯總(算法、后端Java、前端、運維技術導航):博主所有博客導航索引匯總
- 開源項目Studio-Vue—校園工作室管理系統(含前后臺,SpringBoot+Vue):博主個人獨立項目,包含詳細部署上線視頻,已開源
- 學習與生活-專欄:可以了解博主的學習歷程
- 算法專欄:算法收錄
更多博客與資料可查看👇🏻獲取聯系方式👇🏻,🍅文末獲取開發資源及更多資源博客獲取🍅