国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SpringBoot2---單元測試(Junit5)(1)

這篇具有很好參考價值的文章主要介紹了SpringBoot2---單元測試(Junit5)(1)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

org.junit.vintage

junit-vintage-engine

test

org.hamcrest

hamcrest-core

SpringBoot2---單元測試(Junit5)(1),程序員,單元測試,log4j

org.springframework.boot

spring-boot-starter-test

test

現(xiàn)在版本:

@SpringBootTest

class Boot05WebAdminApplicationTests {

@Test

void contextLoads() {

}

}

以前:

@SpringBootTest + @RunWith(SpringRunner.class)

SpringBoot整合Junit以后。

編寫測試方法:@Test標注(注意需要使用junit5版本的注解)

Junit類具有Spring的功能,@Autowired、比如 @Transactional 標注測試方法,測試完成后自動回滾


JUnit5常用注解

=========================================================================

@Test :表示方法是測試方法。但是與JUnit4的@Test不同,他的職責非常單一不能聲明任何屬性,拓展的測試將會由Jupiter提供額外測試

@ParameterizedTest :表示方法是參數(shù)化測試,下方會有詳細介紹

@RepeatedTest :表示方法可重復(fù)執(zhí)行,指定測試次數(shù),會重復(fù)指定次數(shù)

@DisplayName :為測試類或者測試方法設(shè)置展示名稱

@BeforeEach :表示在每個單元測試之前執(zhí)行

@AfterEach :表示在每個單元測試之后執(zhí)行

@BeforeAll :表示在所有單元測試之前執(zhí)行

@AfterAll :表示在所有單元測試之后執(zhí)行

標注這上面兩個注解的方法必須是static

@Tag :表示單元測試類別,類似于JUnit4中的@Categories

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

@Timeout :表示測試方法運行如果超過了指定時間將會返回錯誤

@ExtendWith :為測試類或測試方法提供擴展類引用


常用注解使用演示

=======================================================================

//@RunWith

/*

@BootstrapWith(SpringBootTestContextBootstrapper.class)

@ExtendWith({SpringExtension.class})===>替代runwith

*/

@SpringBootTest //使用spring的測試驅(qū)動進行測試,這樣就可以使用SpringBoot中的容器功能了

@DisplayName(“自定義測試類”)

public class Test

{

@DisplayName(“自定義測試方法”)

@org.junit.jupiter.api.Test

public void test1()

{

System.out.println(“測試方法1運行”);

}

@Disabled //該測試方法不執(zhí)行

@org.junit.jupiter.api.Test

public void test2()

{

System.out.println(“測試方法2運行”);

}

@RepeatedTest(5)//當前測試方法一旦運行就執(zhí)行5次

@org.junit.jupiter.api.Test

public void test3()

{

System.out.println(“測試方法3運行”);

}

//規(guī)定方法的超時時間,超出指定時間就會拋出異常

@org.junit.jupiter.api.Test

@Timeout(value = 1,unit = TimeUnit.SECONDS)//指定單位,這里是秒

public void test4() throws InterruptedException {

Thread.sleep(3000);

System.out.println(“測試方法4運行”);

}

@BeforeEach

public void testBeforeEach()

{

System.out.println(“測試方法即將開始”);

}

@AfterEach

public void testAfterEachEach()

{

System.out.println(“測試方法結(jié)束”);

}

@BeforeAll

static public void testBeforeAll()

{

System.out.println(“所有測試方法即將開始”);

}

@AfterAll

static public void testAfterEachAll()

{

System.out.println(“所有測試方法結(jié)束”);

}

}

SpringBoot2---單元測試(Junit5)(1),程序員,單元測試,log4j

SpringBoot2---單元測試(Junit5)(1),程序員,單元測試,log4j

SpringBoot2---單元測試(Junit5)(1),程序員,單元測試,log4j


斷言機制(assertions)

===============================================================================

斷言(assertions)是測試方法中的核心部分,用來對測試需要滿足的條件進行驗證。這些斷言方法都是 org.junit.jupiter.api.Assertions 的靜態(tài)方法。JUnit 5 內(nèi)置的斷言可以分成如下幾個類別:

  • 檢查業(yè)務(wù)邏輯返回的數(shù)據(jù)是否合理。

  • 所有的測試運行結(jié)束以后,會有一個詳細的測試報告;


1、簡單斷言


用來對單個值進行簡單的驗證。如:

SpringBoot2---單元測試(Junit5)(1),程序員,單元測試,log4j

前面的斷言失敗,后面的斷言不會執(zhí)行

@Test

@DisplayName(“simple assertion”)

public void simple() {

assertEquals(3, 1 + 2, “simple math”);

assertNotEquals(3, 1 + 1);

assertNotSame(new Object(), new Object());

Object obj = new Object();

assertSame(obj, obj);

assertFalse(1 > 2);

assertTrue(1 < 2);

assertNull(null);

assertNotNull(new Object());

}

SpringBoot2---單元測試(Junit5)(1),程序員,單元測試,log4j


2、數(shù)組斷言


通過 assertArrayEquals 方法來判斷兩個對象或原始類型的數(shù)組是否相等

是邏輯相等,也就是equals,不是地址相等,即==對于數(shù)組就是數(shù)組元素一致

@Test

@DisplayName(“array assertion”)

public void array() {

assertArrayEquals(new int[]{1, 2}, new int[] {1, 2},“數(shù)組內(nèi)容不相等”);

}


3、組合斷言


assertAll 方法接受多個 org.junit.jupiter.api.Executable 函數(shù)式接口的實例作為要驗證的斷言,可以通過 lambda 表達式很容易的提供這些斷言

全部斷言需要成功,才會執(zhí)行下面的代碼

@Test

@DisplayName(“assert all”)

public void all() {

assertAll(“Math”,

() -> assertEquals(2, 1 + 1),

() -> assertTrue(1 > 0)

);

}


4、異常斷言


在JUnit4時期,想要測試方法的異常情況時,需要用@Rule注解的ExpectedException變量還是比較麻煩的。而JUnit5提供了一種新的斷言方式Assertions.assertThrows() ,配合函數(shù)式編程就可以進行使用

第一個參數(shù)是預(yù)期出現(xiàn)的異常類型,第二個參數(shù)是Executable 接口,第三個參數(shù)是不符合第一個異常時拋出的信息

斷定業(yè)務(wù)邏輯一定會出現(xiàn)異常,否則會拋出異常

@Test

@DisplayName(“異常測試”)

public void exceptionTest() {

ArithmeticException exception = Assertions.assertThrows(

//扔出斷言異常

ArithmeticException.class, () -> System.out.println(1 % 0));

}


5、超時斷言


Junit5還提供了Assertions.assertTimeout() 為測試方法設(shè)置了超時時間

@Test

@DisplayName(“超時測試”)

public void timeoutTest() {

//如果測試方法時間超過1s將會異常

Assertions.assertTimeout(Duration.ofMillis(1000), () -> Thread.sleep(500));

}


6、快速失敗


通過 fail 方法直接使得測試失敗

@Test

@DisplayName(“fail”)

public void shouldFail() {

fail(“This should fail”);

}


4、前置條件(assumptions)


JUnit 5 中的前置條件(assumptions【假設(shè)】)類似于斷言,不同之處在于不滿足的斷言會使得測試方法失敗,而不滿足的前置條件只會使得測試方法的執(zhí)行終止。前置條件可以看成是測試方法執(zhí)行的前提,當該前提不滿足時,就沒有繼續(xù)執(zhí)行的必要。

和@disabled一樣在測試報告中表現(xiàn)為skiped,注意和上面的包區(qū)分,這些方法都是assumptions下面的,上面是assertions下面的。

@DisplayName(“前置條件”)

public class Test {

private final String environment = “DEV”;

@org.junit.jupiter.api.Test

@DisplayName(“simple”)

public void simpleAssume() {

assumeTrue(Objects.equals(this.environment, “DEV1”),“兩個字符串不相等”);

assumeFalse(() -> Objects.equals(this.environment, “PROD”));

}

@org.junit.jupiter.api.Test

@DisplayName(“assume then do”)

public void assumeThenDo() {

//如果假設(shè)成功了,要怎么辦

assumingThat(

Objects.equals(this.environment, “DEV”),

() -> System.out.println(“In DEV”)

);

}

}

SpringBoot2---單元測試(Junit5)(1),程序員,單元測試,log4j

assumeTrue 和 assumFalse 確保給定的條件為 true 或 false,不滿足條件會使得測試執(zhí)行終止。assumingThat 的參數(shù)是表示條件的布爾值和對應(yīng)的 Executable 接口的實現(xiàn)對象。只有條件滿足時,Executable 對象才會被執(zhí)行;當條件不滿足時,測試執(zhí)行并不會終止。


5、嵌套測試


JUnit 5 可以通過 Java 中的內(nèi)部類和@Nested 注解實現(xiàn)嵌套測試,從而可以更好的把相關(guān)的測試方法組織在一起。在內(nèi)部類中可以使用@BeforeEach 和@AfterEach 注解,而且嵌套的層次沒有限制。

內(nèi)層的test可以驅(qū)動外層的Before(After)Each/All之類的方法提前/之后運行,外層的不能驅(qū)動內(nèi)層的Before(After)Each/All之類的方法

@DisplayName(“前置條件”)

public class Test

{

Stack stack;

@org.junit.jupiter.api.Test

@DisplayName(“is instantiated with new Stack()”)

void isInstantiatedWithNew() {

new Stack<>();

}

自我介紹一下,小編13年上海交大畢業(yè),曾經(jīng)在小公司待過,也去過華為、OPPO等大廠,18年進入阿里一直到現(xiàn)在。

深知大多數(shù)Java工程師,想要提升技能,往往是自己摸索成長或者是報班學(xué)習(xí),但對于培訓(xùn)機構(gòu)動則幾千的學(xué)費,著實壓力不小。自己不成體系的自學(xué)效果低效又漫長,而且極易碰到天花板技術(shù)停滯不前!

因此收集整理了一份《2024年Java開發(fā)全套學(xué)習(xí)資料》,初衷也很簡單,就是希望能夠幫助到想自學(xué)提升又不知道該從何學(xué)起的朋友,同時減輕大家的負擔。SpringBoot2---單元測試(Junit5)(1),程序員,單元測試,log4j

SpringBoot2---單元測試(Junit5)(1),程序員,單元測試,log4j

SpringBoot2---單元測試(Junit5)(1),程序員,單元測試,log4j

既有適合小白學(xué)習(xí)的零基礎(chǔ)資料,也有適合3年以上經(jīng)驗的小伙伴深入學(xué)習(xí)提升的進階課程,基本涵蓋了95%以上Java開發(fā)知識點,真正體系化!

由于文件比較大,這里只是將部分目錄截圖出來,每個節(jié)點里面都包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實戰(zhàn)項目、講解視頻,并且會持續(xù)更新!

如果你覺得這些內(nèi)容對你有幫助,可以掃碼獲取?。。▊渥ava獲?。?/strong>

SpringBoot2---單元測試(Junit5)(1),程序員,單元測試,log4j

寫在最后

很多人感嘆“學(xué)習(xí)無用”,實際上之所以產(chǎn)生無用論,是因為自己想要的與自己所學(xué)的匹配不上,這也就意味著自己學(xué)得遠遠不夠。無論是學(xué)習(xí)還是工作,都應(yīng)該有主動性,所以如果擁有大廠夢,那么就要自己努力去實現(xiàn)它。

最后祝愿各位身體健康,順利拿到心儀的offer!

由于文章的篇幅有限,所以這次的螞蟻金服和京東面試題答案整理在了PDF文檔里

SpringBoot2---單元測試(Junit5)(1),程序員,單元測試,log4j

SpringBoot2---單元測試(Junit5)(1),程序員,單元測試,log4j

SpringBoot2---單元測試(Junit5)(1),程序員,單元測試,log4j
《互聯(lián)網(wǎng)大廠面試真題解析、進階開發(fā)核心學(xué)習(xí)筆記、全套講解視頻、實戰(zhàn)項目源碼講義》點擊傳送門即可獲??!
深入學(xué)習(xí)提升的進階課程,基本涵蓋了95%以上Java開發(fā)知識點,真正體系化!**

由于文件比較大,這里只是將部分目錄截圖出來,每個節(jié)點里面都包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實戰(zhàn)項目、講解視頻,并且會持續(xù)更新!

如果你覺得這些內(nèi)容對你有幫助,可以掃碼獲?。。。▊渥ava獲?。?/strong>

SpringBoot2---單元測試(Junit5)(1),程序員,單元測試,log4j

寫在最后

很多人感嘆“學(xué)習(xí)無用”,實際上之所以產(chǎn)生無用論,是因為自己想要的與自己所學(xué)的匹配不上,這也就意味著自己學(xué)得遠遠不夠。無論是學(xué)習(xí)還是工作,都應(yīng)該有主動性,所以如果擁有大廠夢,那么就要自己努力去實現(xiàn)它。

最后祝愿各位身體健康,順利拿到心儀的offer!

由于文章的篇幅有限,所以這次的螞蟻金服和京東面試題答案整理在了PDF文檔里

[外鏈圖片轉(zhuǎn)存中…(img-hOm90Q92-1713310659917)]

[外鏈圖片轉(zhuǎn)存中…(img-xlEYIGAO-1713310659917)]

[外鏈圖片轉(zhuǎn)存中…(img-je8P7DIU-1713310659917)]
《互聯(lián)網(wǎng)大廠面試真題解析、進階開發(fā)核心學(xué)習(xí)筆記、全套講解視頻、實戰(zhàn)項目源碼講義》點擊傳送門即可獲??!文章來源地址http://www.zghlxwxcb.cn/news/detail-861651.html

到了這里,關(guān)于SpringBoot2---單元測試(Junit5)(1)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • springboot項目使用Junit5 + mockito + jacoco 實現(xiàn)單元測試以及代碼覆蓋率檢查

    在創(chuàng)建springboot項目時會默認添加spring-boot-starter-test依賴,其中已經(jīng)包含了junit、mockito依賴,根據(jù)springboot版本的不同junit和mockito的版本也會有所不同 先說一下各自功能: junit只說一點,junt4和junit5的注解不同,使用方式略有差異,其他不贅述了,基本用法都懂。 mockito是mock的

    2023年04月23日
    瀏覽(33)
  • 單元測試框架——Junit5

    單元測試框架——Junit5

    Junit是一個開源的用于Java語言的單元測試框架,也是Java方向使用最廣泛的單元測試框架。 在pom.xml中引入Junit5相關(guān)依賴 @Test :表示一個方法/用例 BeforeEach :表示被注解的方法在其它所有方法執(zhí)行前都要執(zhí)行一遍,也就是說其它方法有3個它就要執(zhí)行3遍 @BeforeAll :表示被注解的

    2024年02月11日
    瀏覽(25)
  • Junit5單元測試框架詳解

    Junit5單元測試框架詳解

    前面我們學(xué)習(xí)了Selenium自動化測試框架,但是有的時候測試用例會很多,我們需要一個工具來管理這些測試用例,而Junit就是一個很好的管理工具,簡單點來說,Junit就是一個針對Java的單元測試框架; 目錄 一.?關(guān)于Junit5 二. Junit使用 2.1 添加Maven依賴 2.2 注解 2.3 斷言 2.4 套件

    2024年02月06日
    瀏覽(28)
  • JUnit5-單元測試操作詳解

    JUnit5-單元測試操作詳解

    JUnit 5是JUnit測試框架的下一個主要版本,用于編寫和運行單元測試。 與以前版本的 JUnit 不同,JUnit 5 由來自三個不同子項目的多個不同模塊組成。 JUnit 5 =? JUnit 平臺 +? JUnit Jupiter ?+? JUnit Vintage JUnit 平臺 是在 JVM 上啟動測試框架的基礎(chǔ)。它還定義了 TestEngine 用于開發(fā)在平臺

    2024年04月10日
    瀏覽(36)
  • Junit5+Mockito單元測試詳解

    Junit5+Mockito單元測試詳解

    1.宏觀層面:AIR原則 A:Automatic(自動化) 全自動執(zhí)行,輸出結(jié)果無需人工檢查,而是通過斷言驗證。 I:Independent(獨立性) 分層測試,各層之間不相互依賴。 R:Repeatable(可重復(fù)) 可重復(fù)執(zhí)行,不受外部環(huán)境( 網(wǎng)絡(luò)、服務(wù)、中間件等)影響。 2.微觀層面:BCDE原則 B: Bord

    2024年01月17日
    瀏覽(33)
  • 【單元測試】如何使用 JUnit5 框架?

    【單元測試】如何使用 JUnit5 框架?

    ??Junit5是一個用于在Java平臺上進行單元測試的框架。JUnit 5 框架主要由三部分組成:JUnit Platform、JUnit Jupiter 和 JUnit Vintage。 JUnit Platform:定義了測試引擎的 API,是 JVM 上用于啟動測試框架的基礎(chǔ)服務(wù),支持通過 IDE、構(gòu)建工具、命令行等方式運行單元測試。 JUnit Jupiter:包含

    2024年04月10日
    瀏覽(27)
  • 單元測試junit(原始版本、Spring Boot各版本、junit5)使用介紹

    單元測試junit(原始版本、Spring Boot各版本、junit5)使用介紹

    ?? 簡介:java系列技術(shù)分享(??持續(xù)更新中…??) ?? 初衷:一起學(xué)習(xí)、一起進步、堅持不懈 ?? 如果文章內(nèi)容有誤與您的想法不一致,歡迎大家在評論區(qū)指正?? ?? 希望這篇文章對你有所幫助,歡迎點贊 ?? 收藏 ?留言 ?? ?? 更多文章請點擊 單元測試 junit各版本 使用介紹 官

    2023年04月16日
    瀏覽(32)
  • 深度揭秘JUnit5與Mockito的單元測試神秘面紗

    深度揭秘JUnit5與Mockito的單元測試神秘面紗

    在今天的學(xué)習(xí)中,我們將深入研究 JUnit 和Mockito,這是 Java 開發(fā)中最強大的 單元測試 工具之一。通過學(xué)習(xí)如何編寫清晰、高效的單元測試,我們將揭開單元測試的神秘面紗,助力你在項目中寫出更健壯的代碼。 提示: 今天的代碼是在第九天代碼的基礎(chǔ)上進行開發(fā),我們將為

    2024年02月02日
    瀏覽(33)
  • 在 Java 中使用JUnit5進行單元測試和自動化測試

    單元測試和自動化測試是現(xiàn)代軟件開發(fā)過程中必不可少的環(huán)節(jié),可以提高代碼質(zhì)量和開發(fā)效率。JUnit5是Java中流行的單元測試框架,本文將介紹如何在Java中使用JUnit5進行單元測試和自動化測試。 2.1 單元測試的基本概念和原理 單元測試是一種測試方法,用于對軟件系統(tǒng)中的最

    2024年02月03日
    瀏覽(23)
  • Spring Cloud中Controller單元測試 Junit5 & MockMvc

    在Spring Cloud中進行Controller的單元測試,使用Junit5和Mock。 Controller: 方式一:使用@SpringBootTest + @AutoConfigureMockMvc 方式二:使用@WebMvcTest + @ImportAutoConfiguration(RefreshAutoConfiguration.class) 解決 No Scope registered for scope name \\\'refresh\\\' 異常 注入Mockmvc方式有兩種 方式一:(@AutoConfigureMockMvc / @

    2024年02月16日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包