【SpringBoot 2】(十一)單元測試JUnit 5 指標監控

寫在前面在這里插入圖片描述🛫更多知識總結見SpringBoot 2專欄
🚕本篇知識點總結自尚硅谷雷神的視頻
🚒博主對于該知識尚在學習階段
🚄如果發現存在問題請毫不吝嗇的指出
🚀🚀扎哇太棗糕的博客首頁🚀🚀

文章目錄

  • 1 單元測試JUnit 5
    • 1.1JUnit 5簡介以及使用
    • 1.2 常用的測試注解
    • 1.3 斷言(assertions)
    • 1.4 前置條件(assumptions)
    • 1.5 嵌套測試
    • 1.6 參數化測試
  • 2 指標監控
    • 2.1 使用url實現監控
    • 2.2 可視化的監控平臺

1 單元測試JUnit 5

1.1JUnit 5簡介以及使用

??JUnit5作為最新版本的JUnit框架與之前版本的Junit框架有很大的不同。JUnit5主要由三個不同子項目的幾個不同模塊組成:JUnit Platform、JUnit Jupiter、JUnit Vintage。

  • JUnit Platform: 它是在JVM上啟動測試框架的基礎,不僅支持Junit自制的測試引擎,其他測試引擎也都可以接入。
  • JUnit Jupiter: 提供了JUnit5的新的編程模型,是JUnit5新特性的核心。內部 包含了一個測試引擎,用于在Junit Platform上運行。
  • JUnit Vintage: 由于JUint已經發展多年,為了照顧老的項目,JUnit Vintage提供了兼容JUnit4.x,Junit3.x的測試引擎。

??在這里我們需要了解的是:SpringBoot 2.4 以上版本移除了默認對JUnit Vintage的依賴。如果需要兼容junit4需要自行引入,不引入的話就不能使用junit4的功能@Test,但是JUnit5也有一個@Test注解能夠完成同樣的功能

使用:
??由上面的JUnit5分析可知:要想使用JUnit5并兼容JUnit以前的版本的話,必須引用以下兩個依賴

<!--測試的啟動器依賴-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope>
</dependency>
<!--兼容JUnit4版本的單元測試-->
<dependency><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.hamcrest</groupId><artifactId>hamcrest-core</artifactId></exclusion></exclusions>
</dependency>

然后使用@SpringBootTest注解標注測試類,使用@Test標注測試方法

1.2 常用的測試注解

??官方文檔中已經定義并解釋了所有的注解,可以通過這個鏈接進行查看官方文檔的鏈接地址接下來會選取常用的幾個注解進行講解學習

  • @SpringBootTest@Test不再贅述
  • @DisplayName注解:控制臺磚展示名在這里插入圖片描述
  • @BeforeEach注解:每個方法執行之前執行@AfterEach注解:每個方法執行之后執行在這里插入圖片描述
  • @BeforeAll注解:所有方法執行之前執行@AfterAll注解:所有方法執行之后執行
    值得注意的是,這兩個注解的修飾的方法都必須使用static修飾在這里插入圖片描述
  • @Disable注解:在運行測試類的時候禁用這個方法,可以單獨執行
  • @Timeout注解:設置測試方法的執行時間,超過這個時間則拋異常在這里插入圖片描述
  • @ExtendWith注解:設置測試類的測試驅動,@SpringBootTest注解是個復合注解,其中底層就有@ExtendWith注解指定了測試類使用的是SpringBoot的測試驅動
  • @RepeatedTest注解:指定方法重復次數在這里插入圖片描述

1.3 斷言(assertions)

??斷言是測試方法中的核心部分,用來對測試需要滿足的條件進行驗證。所謂斷言就是檢查業務邏輯返回的數據是否合理,在所有的測試運行結束以后,會產生一個詳細的測試報告。值得注意的是:當出現一個斷言失敗之后,從那個斷言開始后面的所有代碼都不會執行
JUnit 5 內置的斷言可以分成如下幾個類別:

  • 簡單斷言在這里插入圖片描述以上方法的用法如下(以assertEquals方法為例):
    在這里插入圖片描述
  • 數組斷言在這里插入圖片描述
  • 組合斷言
    ??組合斷言需要所有的參數都滿足的情況下才會通過,否則會返回出錯的斷言,可以以用來一個方法進行多個簡單斷言在這里插入圖片描述
  • 異常斷言
    ??當結果不拋出定義的異常時斷言失敗
    在這里插入圖片描述
  • 超時斷言
    ??當超出定義的超時時間就會返回斷言在這里插入圖片描述
  • 快速斷言
    ??當符合邏輯的時候就會返回斷言在這里插入圖片描述

??使用斷言的好處就是:可以使用以下圖片中的方法將測試類的所有方法跑一遍,如果斷言都通過則正常運行。否則就會返回所有的斷言失敗的信息
在這里插入圖片描述

1.4 前置條件(assumptions)

??JUnit 5 中的前置條件(又叫假設)類似于斷言,不同之處在于不滿足的斷言會使得測試方法失敗,而不滿足的前置條件只會使得測試方法的執行終止。前置條件可以看成是測試方法執行的前提,當該前提不滿足時,就沒有繼續執行的必要。在這里插入圖片描述由上圖可知,前置條件與斷言最大的區別就是前置條件不滿足的情況下,跳過該方法繼續執行別的方法,而不滿足斷言的話后面的代碼都將不會執行

1.5 嵌套測試

??嵌套測試即是測試類中還有測試類,在這種情況下,外層的test不能驅動內層的Before(After)All(Each)方法,但是內層的test可以驅動外層的Before(After)All(Each)方法。

1.6 參數化測試

  • @ValueSource: 為參數化測試指定入參來源,支持八大基礎類以及String類型,Class類型在這里插入圖片描述
  • @NullSource: 為測試方法提供參數為null
  • @EnumSource: 為測試方法提供枚舉參數
  • @CsvFileSource: 讀取指定CSV文件內容作為參數化測試入參
  • @MethodSource: 讀取指定方法的返回值作為參數化測試入參(但是該方法的返回必須是一個Stream流)在這里插入圖片描述

2 指標監控

2.1 使用url實現監控

引用Actuator啟動器

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

使用配置文件開啟想要的端點

management:endpoints:enabled-by-default: false   # 默認開啟所有的監控端點,定制化的話就需要關閉web:exposure:include: '*'      # 以web的方式暴露所有的端點endpoint:beans:enabled: truehealth:enabled: trueshow-details: alwaysinfo:enabled: truemetrics:enabled: true

使用url查看監控信息
在這里插入圖片描述

2.2 可視化的監控平臺

使用Spring Initializr快速創建一個SpringBoot項目,項目的pom文件加入服務監控平臺的依賴,并在該項目的主程序類上加入@EnableAdminServer注解

<dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId><version>2.3.1</version>
</dependency>

為了防止與需要監控的服務產生端口沖突,需要在配置文件中修改監控的端口號

server:port: 8888

將其他的服務注冊進監控

第一步: 被監控的服務中導入依賴

<dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-client</artifactId><version>2.3.1</version>
</dependency>

第二步: 被監控的服務中配置文件配置監控項目的url

spring:boot:admin:client:url: http://localhost:8888instance:prefer-ip: trueapplication:name: Project-admin_manage

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535088.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535088.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535088.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

sklearn中lstm_分別用sklearn和tensorflow做房價預測

原標題&#xff1a;分別用sklearn和tensorflow做房價預測本篇是后面用tensorflow做回歸時的一個參照&#xff0c;忍不住要說的是sklearn真是簡單好用&#xff0c;要不是他沒有卷積cnn等時髦模型&#xff0c;真是不想用其他家的了。經典的sklearn集成模型結果&#xff1a;真是又…

多個containers 共用一個pvc_2020阜新PVC-UH市政管廠家-煙臺塑膠

2020阜新PVC-UH市政管廠家煙臺金沃泉塑膠有限公司主要產品PVC-U、PVC-M、PVC-UH聚氯乙烯給給水管材、HDPE高密度聚乙烯給水管材、CPVC氯化聚氯乙烯、MPP高壓電力電纜護套管、PERT-Ⅱ型熱力管道、高分子托輥管、水處理膜殼管。公司為電網、南方電網、電建集團、建筑集團、五礦集…

【SpringBoot 2】(十二) profile功能 自定義starter

寫在前面&#x1f6eb;更多知識總結見SpringBoot 2專欄 &#x1f695;本篇知識點總結自尚硅谷雷神的視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客首頁&#x1f680;&#x1f680;…

jpa transaction 回滾_我遇到的JPA中事務回滾的問題

在最近的項目中&#xff0c;做的是解析XML文件&#xff0c;解析過程中會有異常&#xff0c;比如&#xff1a;XML文件中節點的數據和與之對應的數據庫的字段中數據的類型不匹配&#xff1b;XML中數據長度超過數據庫定義的長度&#xff1b;有數據了的重復插入問題&#xff1b;讀取…

pb 怎么判斷是 小數_考試90分以上的孩子是怎么學數學的?聽聽老師怎么說?

一二年級&#xff0c;考試上九十分很輕松。但是&#xff0c;不少小朋友一上三年級&#xff0c;成績就落下來了。那么&#xff0c;我們來看看三年級起&#xff0c;考試還能夠保持在90分以上的孩子是怎么學習數學的吧&#xff01;第一&#xff0c;計算能力過關通過這兩張圖片的對…

快速上手Mybatis-Plus 入門案例

寫在前面&#x1f6eb;更多知識總結見Mybatis-Plus專欄 &#x1f695;內容總結自尚硅谷楊博超老師的視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客首頁&#x1f680;&#x1f680;…

交換機分布緩存_網絡交換機緩存在數據中心的作用

什么產生了緩存&#xff1f;網絡交換機要配置多少緩存才夠用&#xff1f;緩存容量是否有標準可以衡量&#xff1f; 當網絡交換機接口收到超出其所能處理的流量后&#xff0c;它會選擇要么將其緩存&#xff0c;或者將其丟棄。 緩存通常都是因為網絡接口速率不同造成的&#xff0…

黑蘋果 選擇語言 點不了_什么是天然的“黑鉆”?—科普貼

天然黑鉆也被成為“碳酸氫”&#xff0c;具有與白鉆相同的化學成分&#xff0c;然而黑鉆石的晶體結構是不同的&#xff0c;這意味著它們由許多小晶體組成&#xff0c;它們以隨機的形式粘在一起&#xff0c;而不是一個具有可識別自然線的固體錐形。天然黑鉆石有極高的含物&#…

sim卡沒壞但蘋果手機無服務_解決手機插SIM卡后都顯示“無SIM卡”的故障問題

故障現象顧客描述手機插SIM卡后都顯示“無SIM卡”。維修過程引起插入SIM卡卻顯示“無SIM卡”的故障&#xff0c;除了可能是SIM卡座的供電、時鐘、復位及SIM卡插入檢測信號不正常導致外&#xff0c;還有可能是基帶不正常導致的。插上手機卡&#xff0c;左上角提示“無SIM卡”&am…

Mybatis-Plus實現簡單的增刪改查 實體類上的注解

寫在前面&#x1f6eb;更多知識總結見Mybatis-Plus專欄 &#x1f695;內容總結自尚硅谷楊博超老師的視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客首頁&#x1f680;&#x1f680;…

webpack 讀取文件夾下的文件_webpack基本介紹及使用

1.什么是webpackwebpack是一個前端資源加載/打包工具。它根據模塊的依賴關系進行靜態分析&#xff0c;然后將這些模塊按照指定的規則生成對應的靜態資源。從上圖看出&#xff0c;webpack可以將多種靜態資源js&#xff0c;css&#xff0c;less轉換成一個靜態文件&#xff0c;減少…

conda失敗說沒有寫權限_愛情中,為什么男生表白失敗,女生還說可以繼續做朋友,想過沒有...

在愛情中&#xff0c;不是每個男生都是幸運的&#xff0c;也不是每次的表白都是如你所愿的。有成功總有失敗&#xff0c;成功是喜悅的&#xff0c;但是失敗卻是痛苦的。不過有的時候男生和女生表白以后&#xff0c;女生對男生說了這樣的一段&#xff0c;其實我希望以后我們還是…

Mybatis-Plus中Wrapper條件構造器的使用

寫在前面 &#x1f6eb;更多知識總結見Mybatis-Plus專欄 &#x1f695;內容總結自尚硅谷楊博超老師的視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客首頁&#x1f680;&#x1f680…

springboot設置默認值_線上Bug無法復現?老司機教你一招,SpringBoot遠程調試不用愁!...

前言在部署線上項目時&#xff0c;相信大家都會遇到一個問題&#xff0c;線上的 Bug 但是在本地不會復現&#xff0c;多么無奈。此時最常用的就是取到前端傳遞的數據用接口測試工具測試&#xff0c;比如 POSTMAN&#xff0c;復雜不&#xff0c;難受不&#xff1f;今天陳某教你一…

Mybatis-Plus的分頁 樂觀鎖插件 通用枚舉 多數據源

寫在前面&#x1f6eb;更多知識總結見Mybatis-Plus專欄 &#x1f695;內容總結自尚硅谷楊博超老師的視頻 &#x1f692;博主對于該知識尚在學習階段 &#x1f684;如果發現存在問題請毫不吝嗇的指出 &#x1f680;&#x1f680;扎哇太棗糕的博客首頁&#x1f680;&#x1f680;…

學python哪個網站好-有哪些值得推薦的Python學習網站|

現在那個網站可以學習python爬蟲&#xff1f; 為大家分享Python學習經驗: 1、尋找一本Python書籍&#xff0c;要求淺顯易懂、全面細致程較好&#xff0c;專注于這一本&#xff0c;從頭開始研究&#xff0c;把整本書掌握透徹。 2、找一個項目練手&#xff0c;熟悉基礎后&#xf…

等待的操作過時_不會過時的6種網站seo優化操作

SEO優化一直在變化&#xff0c;百度和谷歌的算法也在不斷的迭代更新&#xff0c;所以競爭永遠不會停止。今天小編就來給大家分享一下&#xff0c;6種不會過時的網站seo優化操作。1.保持正常優化為網站訪客提供高質量的內容、卓越的用戶體驗和安全性以及卓越的技術網站。這可能需…

java的for循環取出數據只是拿到最后一個_一問SQL優化就無從藏身?那只是你對原理的精髓掌握不深

?曾幾何時&#xff0c;我信誓旦旦的認為只要 SQL 寫的好&#xff0c;面試過程永不倒。結果在一次又一次的征途中&#xff0c;「最終還是以完敗落下帷幕」。結果都源于注重使用而忽略原理&#xff0c;從而不知也不了解「SQL」優化應如何面對。讀文的你&#xff0c;如今可有這樣…

SpringBoot前后端分離解決跨域問題的三種解決方案

&#x1f680;&#x1f680;扎哇太棗糕的博客首頁&#x1f680;&#x1f680;** 文章目錄&#x1f34a;什么是跨域&#x1f34a;跨域問題的解決策略&#x1f34a;三種解決方法&#x1f34a;什么是跨域 想要知道什么是跨域的話&#xff0c;我們可以通過一個小案例簡單了解一下跨…

ant design vue 樹形控件_官宣!vue.ant.design 低調上線

點擊右上方&#xff0c;關注開源中國OSC頭條號&#xff0c;獲取最新技術資訊官宣&#xff01;官宣&#xff01;官宣&#xff01;是的&#xff0c;你沒看錯就是那個 https://vue.ant.design。至此&#xff0c;Ant Design 已經全面覆蓋了 React、Angular、Vue 三大前端框架&#…