日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Springboot集成JUnit5優雅進行單元測試的示例

瀏覽:129日期:2023-04-17 13:12:54

為什么使用JUnit5

JUnit4被廣泛使用,但是許多場景下使用起來語法較為繁瑣,JUnit5中支持lambda表達式,語法簡單且代碼不冗余。 JUnit5易擴展,包容性強,可以接入其他的測試引擎。 功能更強大提供了新的斷言機制、參數化測試、重復性測試等新功能。 ps:開發人員為什么還要測試,單測寫這么規范有必要嗎?其實單測是開發人員必備技能,只不過很多開發人員開發任務太重導致調試完就不管了,沒有系統化得單元測試,單元測試在系統重構時能發揮巨大的作用,可以在重構后快速測試新的接口是否與重構前有出入。

簡介

Springboot集成JUnit5優雅進行單元測試的示例

如圖,JUnit5結構如下:

JUnit Platform: 這是Junit提供的平臺功能模塊,通過它,其它的測試引擎都可以接入Junit實現接口和執行。 JUnit JUpiter:這是JUnit5的核心,是一個基于JUnit Platform的引擎實現,它包含許多豐富的新特性來使得自動化測試更加方便和強大。 JUnit Vintage:這個模塊是兼容JUnit3、JUnit4版本的測試引擎,使得舊版本的自動化測試也可以在JUnit5下正常運行。

依賴引入

我們以SpringBoot2.3.1為例,引入如下依賴,防止使用舊的junit4相關接口我們將其依賴排除。

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions><exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId></exclusion> </exclusions> </dependency>

常用注解

@BeforeEach:在每個單元測試方法執行前都執行一遍 @BeforeAll:在每個單元測試方法執行前執行一遍(只執行一次) @DisplayName('商品入庫測試'):用于指定單元測試的名稱 @Disabled:當前單元測試置為無效,即單元測試時跳過該測試 @RepeatedTest(n):重復性測試,即執行n次 @ParameterizedTest:參數化測試, @ValueSource(ints = {1, 2, 3}):參數化測試提供數據

斷言

JUnit Jupiter提供了強大的斷言方法用以驗證結果,在使用時需要借助java8的新特性lambda表達式,均是來自org.junit.jupiter.api.Assertions包的static方法。

assertTrue與assertFalse用來判斷條件是否為true或false

@Test @DisplayName('測試斷言equals') void testEquals() { assertTrue(3 < 4); }

assertNull與assertNotNull用來判斷條件是否為·null

@Test @DisplayName('測試斷言NotNull') void testNotNull() { assertNotNull(new Object()); }

assertThrows用來判斷執行拋出的異常是否符合預期,并可以使用異常類型接收返回值進行其他操作

@Test @DisplayName('測試斷言拋異常') void testThrows() { ArithmeticException arithExcep = assertThrows(ArithmeticException.class, () -> { int m = 5/0; }); assertEquals('/ by zero', arithExcep.getMessage()); }

assertTimeout用來判斷執行過程是否超時

@Test @DisplayName('測試斷言超時') void testTimeOut() { String actualResult = assertTimeout(ofSeconds(2), () -> { Thread.sleep(1000); return 'a result'; }); System.out.println(actualResult); }

assertAll是組合斷言,當它內部所有斷言正確執行完才算通過

@Test @DisplayName('測試組合斷言') void testAll() { assertAll('測試item商品下單',() -> { //模擬用戶余額扣減 assertTrue(1 < 2, '余額不足');},() -> { //模擬item數據庫扣減庫存 assertTrue(3 < 4);},() -> { //模擬交易流水落庫 assertNotNull(new Object());} ); }

重復性測試

在許多場景中我們需要對同一個接口方法進行重復測試,例如對冪等性接口的測試。

JUnit Jupiter通過使用@RepeatedTest(n)指定需要重復的次數

@RepeatedTest(3) @DisplayName('重復測試') void repeatedTest() { System.out.println('調用'); }

Springboot集成JUnit5優雅進行單元測試的示例

參數化測試

參數化測試可以按照多個參數分別運行多次單元測試這里有點類似于重復性測試,只不過每次運行傳入的參數不用。需要使用到@ParameterizedTest,同時也需要@ValueSource提供一組數據,它支持八種基本類型以及String和自定義對象類型,使用極其方便。

@ParameterizedTest @ValueSource(ints = {1, 2, 3}) @DisplayName('參數化測試') void paramTest(int a) { assertTrue(a > 0 && a < 4); }

內嵌測試

JUnit5提供了嵌套單元測試的功能,可以更好展示測試類之間的業務邏輯關系,我們通常是一個業務對應一個測試類,有業務關系的類其實可以寫在一起。這樣有利于進行測試。而且內聯的寫法可以大大減少不必要的類,精簡項目,防止類爆炸等一系列問題。

@SpringBootTest@AutoConfigureMockMvc@DisplayName('Junit5單元測試')public class MockTest { //.... @Nested @DisplayName('內嵌訂單測試') class OrderTestClas { @Test @DisplayName('取消訂單') void cancelOrder() { int status = -1; System.out.println('取消訂單成功,訂單狀態為:'+status); } }}

以上就是Springboot集成JUnit5優雅進行單元測試的示例的詳細內容,更多關于Springboot 單元測試的資料請關注好吧啦網其它相關文章!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
免费观看日韩电影| 尤物tv在线精品| 四虎精品永久免费| 91亚洲精品在看在线观看高清| 日本亚洲视频| 国产亚洲精品美女久久| 日韩va亚洲va欧美va久久| 国产精品免费精品自在线观看| 精品国产亚洲日本| 精品国产一级| 性欧美xxxx免费岛国不卡电影| 亚洲制服少妇| 国产精品亚洲四区在线观看| 青青青免费在线视频| 欧美日韩国产高清电影| 蜜桃久久av一区| 国产精品传媒麻豆hd| 欧洲一级精品| 国产精品嫩草99av在线| 日韩av影院| 91亚洲自偷观看高清| 欧美亚洲国产激情| 日韩三区四区| 黑森林国产精品av| 欧美+亚洲+精品+三区| 五月激激激综合网色播| 国产成人调教视频在线观看| 欧美精品一线| 国产精品porn| 一区二区自拍| 久久精品一区二区三区中文字幕| 欧美日韩日本国产亚洲在线 | 欧美aa在线观看| 久久亚洲电影| 国产va免费精品观看精品视频| 精品国模一区二区三区| 日韩精品福利一区二区三区| 欧洲精品一区二区三区| 日韩三级精品| 欧美综合另类| 美女国产精品久久久| 欧美精品一区二区三区精品| 国产激情久久| 亚洲一区久久| 日韩伦理福利| 国产香蕉精品| 亚洲伊人精品酒店| 九色porny丨国产首页在线| 青草国产精品久久久久久| 99精品视频在线观看免费播放| 亚洲视频国产| 香蕉人人精品| 国产一区二区三区不卡av| 日韩精品视频网站| 噜噜噜躁狠狠躁狠狠精品视频| 国产成年精品| 国产精品嫩模av在线| 亚洲欧美日韩国产综合精品二区 | 午夜在线视频一区二区区别| 国产伦久视频在线观看| 国产精品地址| 亚洲精品乱码| 欧美1级日本1级| 91视频精品| 久久99影视| 日本少妇精品亚洲第一区| 日韩一级网站| se01亚洲视频 | 成人国产精品一区二区网站| 亚洲综合色婷婷在线观看| 亚洲精品2区| 久久久精品午夜少妇| 精品国产乱码久久久| 国产亚洲精品美女久久| 日韩欧美激情| 视频一区中文字幕国产| 国产91精品对白在线播放| 精品久久久久久久| 欧美激情视频一区二区三区在线播放| 婷婷亚洲精品| 日韩精品久久久久久久软件91| 伊人国产精品| 亚洲香蕉久久| 一二三区精品| 久久福利影视| 综合激情网站| 免费人成在线不卡| 男女性色大片免费观看一区二区| 在线亚洲免费| 男女男精品视频网| 亚洲精品综合| 日本免费一区二区视频| 88久久精品| 国产精品jk白丝蜜臀av小说| 国产精品nxnn| 成人国产精品一区二区免费麻豆| 国产精品视频一区二区三区四蜜臂| 日韩高清在线观看一区二区| 欧美亚洲自偷自偷| 国产乱子精品一区二区在线观看 | 免费日韩成人| 久久中文字幕一区二区三区| 国产一区精品福利| 久久精品电影| 水野朝阳av一区二区三区| 丝袜国产日韩另类美女| 日韩 欧美一区二区三区| 亚洲2区在线| 久久精品凹凸全集| 久久亚洲黄色| 九九久久国产| 婷婷激情一区| 亚洲欧美日韩国产一区| 天堂精品久久久久| 美日韩一区二区三区| 国产99在线| 一区二区亚洲精品| 97精品国产99久久久久久免费| 欧美经典一区| 久久亚洲成人| 日本不卡在线视频| 精品日韩一区| 国产韩日影视精品| 日韩高清在线一区| 色偷偷色偷偷色偷偷在线视频| 蜜桃精品在线| 中文一区一区三区免费在线观 | 夜久久久久久| 国产欧美一区二区三区精品观看| 福利一区二区三区视频在线观看| 99精品在线| 日韩精品亚洲专区| 日韩天堂在线| 日本视频一区二区| 久久九九电影| 日本色综合中文字幕| 日韩大片在线观看| 日本亚洲欧美天堂免费| 美女av在线免费看| 日韩中文字幕av电影| 日韩av免费大片| 亚洲色图国产| 国产精品99一区二区三| 蜜臀精品久久久久久蜜臀| 精品国产精品国产偷麻豆| 首页欧美精品中文字幕| 国产66精品| 日本中文字幕不卡| 神马午夜久久| 国产欧美日韩免费观看| 在线成人直播| 成人台湾亚洲精品一区二区| 免费不卡在线观看| a国产在线视频| 日韩av影院| 99国产精品久久久久久久| 久久只有精品| 鲁大师成人一区二区三区| 日本黄色精品| 日本少妇精品亚洲第一区| 亚洲国产日韩欧美在线| 精品三级av在线导航| 在线精品亚洲| 亚洲性视频h| 国产一区二区三区四区大秀| 亚洲三级精品| 亚洲国产日韩欧美在线| 福利精品一区| 国产欧美日韩一级| 一本一道久久a久久| 久久精品动漫| 国产精品伦理久久久久久| 亚洲另类视频| 亚洲一区国产| 欧美1区2区3区| 日韩在线观看一区| 欧美a在线观看| 欧美日韩在线精品一区二区三区激情综合 | 国产精品97| www.51av欧美视频| 国产欧美三级| 日本免费一区二区视频| 亚洲神马久久| 国产一区二区三区自拍| 亚洲永久av| 日韩成人精品一区| 美女高潮久久久| 国产精品免费大片| 国产精品中文字幕制服诱惑| 亚洲男人在线| 久久午夜影视| 免费精品视频| 亚洲色诱最新| 亚洲黄色在线| 尤物精品在线| 麻豆亚洲精品| 综合激情一区| 蜜桃视频免费观看一区| 丝袜美腿一区二区三区| 免费日韩精品中文字幕视频在线|