掃二維碼與項目經理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網交流
單元測試是一種軟件測試方法,用于測試軟件系統(tǒng)的最小可測試單元,例如函數(shù)、方法或類的行為。單元測試通常由開發(fā)人員編寫,并在編寫代碼時就開始執(zhí)行。這樣可以保證實時檢測代碼中的錯誤、缺陷和潛在的問題,確保代碼滿足預期的行為和輸出。

創(chuàng)新互聯(lián)公司于2013年開始,是專業(yè)互聯(lián)網技術服務公司,擁有項目成都網站設計、網站制作、外貿營銷網站建設網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元屯留做網站,已為上家服務,為屯留各地企業(yè)和個人服務,聯(lián)系電話:13518219792
單元測試可以分為如下幾個步驟,然后在開發(fā)中就可以不斷地編寫、執(zhí)行、分析測試用例,并修復問題。
- Junit5
JUnit是Java領域內最為流行的單元測試框架,Junit測試又稱白盒測試,旨在驗證被測試的軟件如何(How)完成功能和完成什么樣(What)的功能。Junit的最新版本Junit 5集合了 Junit Platform、Junit Jupiter、Junit Vintage等。其中,Junit Platform是在JVM上啟動測試框架的基礎;Junit Jupiter提供了新的編程模型,包含了一個測試引擎,在Junit Platform上運行;Junit Vintage 提供了兼容JUnit4.x,Junit3.x的測試引擎,幫助老項目依賴包的過度升級。Springboot2.2.0+中默認集成:
org.openjdk.jmh
jmh-core
1.23
org.openjdk.jmh
jmh-generator-annprocess
1.23
常用注解及說明如下:
@Test :表示方法是測試方法(即框架操作對象),與JUnit4的@Test不同,JUnit5的@Test非常單一不能聲明任何屬性,拓展的測試都由Jupiter提供
@DisplayName :為測試類或者測試方法設置展示的名稱
@BeforeAll :表示在所有單元測試方法之前執(zhí)行
@AfterAll :表示在所有單元測試方法之后執(zhí)行
@BeforeEach :表示在每個單元測試方法之前執(zhí)行
@AfterEach :表示在每個單元測試方法之后執(zhí)行
@Timeout :表示測試方法運行超過指定時間將會拋出TimeoutException異常
@Disabled :表示測試類或測試方法不執(zhí)行,類似于JUnit4中的@Ignore
@RepeatedTest :表示方法需要重復執(zhí)行的次數(shù)
@ExtendWith :為測試類或測試方法提供@Autowired的IOC注入
- JMH
JMH(Java Microbenchmark Harness)是java領域用于代碼微基準測試的工具套件,主要是基于方法層面的基準測試,精度可以達到納秒級,它是由Java虛擬機團隊開發(fā)的。當你定位到熱點方法,希望進一步優(yōu)化方法性能的時候,就可以使用 JMH 對優(yōu)化的結果進行量化的分析
springboot集成方式導入依賴包如下(最新版本1.36):
org.openjdk.jmh
jmh-core
1.23
org.openjdk.jmh
jmh-generator-annprocess
1.23
JMH的應用場景如下:
(1)想準確地知道某個方法需要執(zhí)行多長時間及執(zhí)行時間和輸入之間的相關性;
(2)對比接口不同實現(xiàn)在給定條件下的吞吐量;
(3)查看多少百分比的請求在多長時間內完成。
上述兩個方案前者是確保代碼運行的正確性,后者旨在測試代碼運行的性能,在項目實戰(zhàn)中可以做到強強聯(lián)合,確保代碼質量和穩(wěn)定性,幫助完善或改進設計和架構,編寫高質量的單元測試需要遵循最佳實踐。
單元測試的目的是為了驗證軟件開發(fā)的功能、性能、完整性。當軟件發(fā)生變化時,單元測試可以幫助開發(fā)人員確定哪些部分受到影響,以及如何更改代碼。還可以幫助開發(fā)人員了解他們的代碼,從單元測試中獲得反饋,從而更好繼續(xù)開發(fā)軟件。文中提到的基于JUnit5和JMH兩種互補方案,可以從代碼功能和性能兩個角度保證軟件交付成果。
參考文獻
[1] 蔡高亮,2008, 軟件單元測試[J],http://www.its.cesi.cn/qkContent/articleDetail/1043,2023/3/13.

我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網交流