成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

五分鐘技術趣談 | 單元測試的重要性及方案推薦

開發 測試
單元測試是一種軟件測試方法,用于測試軟件系統的最小可測試單元。單元測試通常由開發人員編寫,并在編寫代碼時就開始執行。這樣可以保證實時檢測代碼中的錯誤、缺陷和潛在的問題,確保代碼滿足預期的行為和輸出。

Part 01 什么是單元測試

單元測試是一種軟件測試方法,用于測試軟件系統的最小可測試單元,例如函數、方法或類的行為。單元測試通常由開發人員編寫,并在編寫代碼時就開始執行。這樣可以保證實時檢測代碼中的錯誤、缺陷和潛在的問題,確保代碼滿足預期的行為和輸出。

單元測試可以分為如下幾個步驟,然后在開發中就可以不斷地編寫、執行、分析測試用例,并修復問題。

  • 確定測試目標:在編寫單元測試之前,開發人員需要明確測試目標和預期結果。這有助于確保測試的準確性和完整性。
  • 編寫測試用例:測試用例是單元測試的核心。測試用例應該覆蓋代碼的各種情況和條件,并檢測其行為和輸出。
  • 執行測試用例:測試用例可以手動執行,也可以通過自動化測試框架執行。自動化測試框架可以幫助開發人員更快速和有效地執行測試用例,并自動報告測試結果。
  • 分析測試結果:分析測試結果可以幫助開發人員更好地理解代碼的行為和輸出,發現問題和改進代碼。
  • 修復問題:在發現問題之后,開發人員需要及時修復問題,確保代碼的質量和穩定性。修復問題后,需要重新運行測試用例,確保問題已經解決并且沒有引入新的問題。

Part 02 單元測試的作用

  • 確保代碼質量:單元測試可以幫助開發人員檢測代碼中的錯誤、缺陷和潛在的問題。通過及時發現和修復這些問題,可以保證代碼的質量和穩定性。
  • 提高代碼可維護性:單元測試可以幫助開發人員更好地理解代碼,了解其行為和預期輸出,這使得代碼更易于維護和修改。
  • 提高開發效率:通過早期發現和解決問題,可以減少后期的調試時間和資源成本,提高開發效率。
  • 促進團隊合作:單元測試可以作為開發團隊的交流和協作工具。團隊成員可以分享代碼和測試結果,并共同解決問題。
  • 改進設計和架構:單元測試可以促進更好的設計和架構實踐。通過編寫可測試的代碼和測試用例,可以幫助開發人員更好地理解系統的組成部分,并促進設計和架構的優化。

Part 03 Java項目中單元測試方案推薦

- 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+中默認集成:

<dependency>
    <groupId>org.openjdk.jmh</groupId>
    <artifactId>jmh-core</artifactId>
    <version>1.23</version>
</dependency>
<dependency>
    <groupId>org.openjdk.jmh</groupId>
    <artifactId>jmh-generator-annprocess</artifactId>
    <version>1.23</version>
</dependency>

常用注解及說明如下:

@Test :表示方法是測試方法(即框架操作對象),與JUnit4的@Test不同,JUnit5的@Test非常單一不能聲明任何屬性,拓展的測試都由Jupiter提供

@DisplayName :為測試類或者測試方法設置展示的名稱

@BeforeAll :表示在所有單元測試方法之前執行

@AfterAll :表示在所有單元測試方法之后執行

@BeforeEach :表示在每個單元測試方法之前執行

@AfterEach :表示在每個單元測試方法之后執行

@Timeout :表示測試方法運行超過指定時間將會拋出TimeoutException異常

@Disabled :表示測試類或測試方法不執行,類似于JUnit4中的@Ignore

@RepeatedTest :表示方法需要重復執行的次數

@ExtendWith :為測試類或測試方法提供@Autowired的IOC注入

- JMH

JMH(Java Microbenchmark Harness)是java領域用于代碼微基準測試的工具套件,主要是基于方法層面的基準測試,精度可以達到納秒級,它是由Java虛擬機團隊開發的。當你定位到熱點方法,希望進一步優化方法性能的時候,就可以使用 JMH 對優化的結果進行量化的分析

springboot集成方式導入依賴包如下(最新版本1.36):

<dependency>
    <groupId>org.openjdk.jmh</groupId>
    <artifactId>jmh-core</artifactId>
    <version>1.23</version>
</dependency>
<dependency>
    <groupId>org.openjdk.jmh</groupId>
    <artifactId>jmh-generator-annprocess</artifactId>
    <version>1.23</version>
</dependency>

JMH的應用場景如下:

(1)想準確地知道某個方法需要執行多長時間及執行時間和輸入之間的相關性;

(2)對比接口不同實現在給定條件下的吞吐量;

(3)查看多少百分比的請求在多長時間內完成。

上述兩個方案前者是確保代碼運行的正確性,后者旨在測試代碼運行的性能,在項目實戰中可以做到強強聯合,確保代碼質量和穩定性,幫助完善或改進設計和架構,編寫高質量的單元測試需要遵循最佳實踐。

Part 04 總結

單元測試的目的是為了驗證軟件開發的功能、性能、完整性。當軟件發生變化時,單元測試可以幫助開發人員確定哪些部分受到影響,以及如何更改代碼。還可以幫助開發人員了解他們的代碼,從單元測試中獲得反饋,從而更好繼續開發軟件。文中提到的基于JUnit5和JMH兩種互補方案,可以從代碼功能和性能兩個角度保證軟件交付成果。

?? 參考文獻

[1] 蔡高亮,2008, 軟件單元測試[J],http://www.its.cesi.cn/qkContent/articleDetail/1043,2023/3/13.

責任編輯:龐桂玉 來源: 移動Labs
相關推薦

2023-07-23 18:47:59

Docker開源

2023-07-16 18:49:42

HTTP網絡

2023-04-15 20:25:23

微前端

2023-09-02 20:22:42

自動化測試軟件開發

2023-09-03 19:06:42

2023-08-23 07:21:44

JsonSchema測試

2023-07-02 16:34:06

GPU虛擬化深度學習

2023-07-02 16:09:57

人工智能人臉識別

2023-07-12 15:50:29

機器學習人工智能

2023-08-29 06:50:01

Javamaven

2023-09-12 07:10:13

Nacos架構

2023-07-30 10:09:36

MMD數據庫

2023-08-15 14:46:03

2023-07-31 08:55:15

AI技術網絡暴力

2023-07-23 08:35:13

Web網絡

2024-12-18 14:10:33

2023-07-12 16:03:37

Android開發架構

2023-08-06 07:00:59

Openstack網絡

2023-09-17 17:51:43

Android 14

2023-08-29 06:55:43

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品二三区| 毛片黄片 | 久久成人免费 | 亚洲精品第一国产综合野 | 一区不卡在线观看 | 国产亚韩 | 欧美一级免费片 | 99精品久久久久 | 亚洲一区二区三区四区五区中文 | 波多野吉衣久久 | 美女黄色在线观看 | 丁香五月网久久综合 | 精品免费国产一区二区三区 | 国产精品久久久久久久久久免费看 | 久草综合在线视频 | 九九精品在线 | 国产亚洲www | 亚洲精品一 | 日韩av免费在线观看 | av天天看 | 免费精品视频在线观看 | 久久国产精品无码网站 | 亚洲精品68久久久一区 | 久久久国产精品一区 | 97超碰在线免费 | 欧美色图另类 | 亚洲成人精选 | 一级黄色毛片 | 日韩在线观看一区 | 成年视频在线观看福利资源 | 国产精品欧美精品日韩精品 | 男女啪啪高潮无遮挡免费动态 | 久久久精品高清 | 久久久久久久久久久久久九 | 中文字幕高清av | 国产综合精品一区二区三区 | 日本理论片好看理论片 | 日本精品一区二区三区在线观看视频 | 99精品网| 91大神在线资源观看无广告 | 国产高清精品一区二区三区 |