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

Junit5單元測(cè)試框架詳解

這篇具有很好參考價(jià)值的文章主要介紹了Junit5單元測(cè)試框架詳解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前面我們學(xué)習(xí)了Selenium自動(dòng)化測(cè)試框架,但是有的時(shí)候測(cè)試用例會(huì)很多,我們需要一個(gè)工具來(lái)管理這些測(cè)試用例,而Junit就是一個(gè)很好的管理工具,簡(jiǎn)單點(diǎn)來(lái)說(shuō),Junit就是一個(gè)針對(duì)Java的單元測(cè)試框架;

目錄

一.?關(guān)于Junit5

二. Junit使用

2.1 添加Maven依賴(lài)

2.2 注解

2.3 斷言

2.4 套件


一.?關(guān)于Junit5

Java 語(yǔ)言的單元測(cè)試框架相對(duì)統(tǒng)一,JUnit 和TestNG 幾乎始終處于市場(chǎng)前兩位。其中 JUnit 以較長(zhǎng)的發(fā)展歷史和源源不斷的功能演進(jìn),得到了大多數(shù)用戶(hù)的青睞;

Junit5 由?JUnit Platform?+?JUnit Jupiter?+?JUnit Vintage3?部分構(gòu)成,借用 IBM Developer 的一張圖來(lái)說(shuō)明?JUnit 5 的架構(gòu)?:

Junit5單元測(cè)試框架詳解

JUnit Platform?:

其主要作用是在 JVM 上啟動(dòng)測(cè)試框架。它定義了一個(gè)抽象的 TestEngine API 來(lái)定義運(yùn)行在平臺(tái)上的測(cè)試框架;也就是說(shuō)其他的自動(dòng)化測(cè)試引擎或開(kāi)發(fā)人員自己定制的引擎都可以接入 Junit 實(shí)現(xiàn)對(duì)接和執(zhí)行。同時(shí)還支持通過(guò)命令行、Gradle 和 Maven 來(lái)運(yùn)行;

JUnit Jupiter?:

這是 Junit5 的核心,可以看作是承載 Junit4 原有功能的演進(jìn),包含了 JUnit 5 最新的編程模型和擴(kuò)展機(jī)制;很多豐富的新特性使 JUnit ?動(dòng)化測(cè)試更加方便、功能更加豐富和強(qiáng)大。也是測(cè)試需要重點(diǎn)學(xué)習(xí)的地方;Jupiter 本身也是?一個(gè)基于 Junit Platform 的引擎實(shí)現(xiàn),對(duì) JUnit 5 而言,JUnit Jupiter API 只是另一個(gè) API;

JUnit Vintage?:

Junit 發(fā)展了10數(shù)年,Junit 3 和 Junit 4 都積累了大量的?用戶(hù),作為新一代框 架,這個(gè)模塊是對(duì) JUnit3,JUnit4 版本兼容的測(cè)試引擎,使舊版本 junit 的?動(dòng)化測(cè)試腳本也可以順暢運(yùn)行在 Junit5 下,它也可以看作是基于 Junit Platform 實(shí)現(xiàn)的引擎范例;

JUnit 5 對(duì) Java 運(yùn)行環(huán)境的最低要求是 Java 8;


二. Junit使用

2.1 添加Maven依賴(lài)

我們?cè)诓僮?Junit 的時(shí)候要添加相應(yīng)的依賴(lài),可以去Maven倉(cāng)庫(kù)自行下載,這里給出一段代碼:

<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.9.1</version>
        </dependency>

2.2 注解

1)Test

表示方法是測(cè)試方法,與Junit4的@Test不同,不能聲明任何屬性,因?yàn)镴Unit Jupiter中的測(cè)試擴(kuò)展需要通過(guò)專(zhuān)用的注解;

public class Junit_Test {
    @Test
    void Test01(){
        System.out.println("測(cè)試用例1");
    }

    @Test
    void Test02(){
        System.out.println("測(cè)試用例2");
    }
}

Junit5單元測(cè)試框架詳解

?

2)Disable

用于禁用一個(gè)測(cè)試類(lèi)或測(cè)試方法;類(lèi)似于JUnit 4的' @Ignore '。即執(zhí)行單元測(cè)試時(shí),會(huì)忽略對(duì)應(yīng)的測(cè)試類(lèi)或者測(cè)試方法;

public class Junit_Test {
    @Test
    void Test01(){
        System.out.println("測(cè)試用例1");
    }

    @Test
    void Test02(){
        System.out.println("測(cè)試用例2");
    }

    @Disabled
    void Test03(){
        System.out.println("測(cè)試用例3");
    }
}

Junit5單元測(cè)試框架詳解

3)?BeforeAll 和 AfterAll

BeforeAll:表示方法在所有測(cè)試方法之前運(yùn)行;

AfterAll:表示方法在所有測(cè)試方法之后運(yùn)行;

public class Junit_Test {
    @AfterAll
    // 需要添加一個(gè)關(guān)鍵字static,是針對(duì)這個(gè)類(lèi)的
    static void Test05(){
        System.out.println("測(cè)試用例AfterAll");
    }
    @Test
    void Test01(){
        System.out.println("測(cè)試用例1");
    }

    @Test
    void Test02(){
        System.out.println("測(cè)試用例2");
    }

    @Disabled
    void Test03(){
        System.out.println("測(cè)試用例3");
    }
    @BeforeAll
    // 需要添加一個(gè)關(guān)鍵字static,是針對(duì)這個(gè)類(lèi)的
    static void Test04(){
        System.out.println("測(cè)試用例BeforeAll");
    }

Junit5單元測(cè)試框架詳解

?針對(duì)這個(gè)操作,通常情況下,創(chuàng)建驅(qū)動(dòng),打開(kāi)網(wǎng)頁(yè),都放到BeforeAll里面,關(guān)閉瀏覽器放到AfterAll里;

4)BeforeEach 和?AfterEach

BeforeEach:表示方法應(yīng)該在當(dāng)前類(lèi)中每個(gè) @Test, @RepeatedTest, @ParameterizedTest 或 @TestFactory 方法之前執(zhí)行;類(lèi)似于Junit4的@Before 。即在每個(gè)單元測(cè)試之前執(zhí)行,如果測(cè)試類(lèi)有n個(gè)測(cè)試方法,則被執(zhí)行n次;

AfterEach:

表示方法應(yīng)該在當(dāng)前類(lèi)中每個(gè) @Test, @RepeatedTest, @ParameterizedTest 或 @TestFactory 方法之后執(zhí)行;類(lèi)似于Junit4的@After 。即在每個(gè)單元測(cè)試之后執(zhí)行,如果測(cè)試類(lèi)有n個(gè)測(cè)試方法,則被執(zhí)行n次;

public class Junit_Test {
    @AfterAll
    // 需要添加一個(gè)關(guān)鍵字static,是針對(duì)這個(gè)類(lèi)的
    static void Test05(){
        System.out.println("測(cè)試用例AfterAll");
    }
    @Test
    void Test01(){
        System.out.println("測(cè)試用例1");
    }

    @Test
    void Test02(){
        System.out.println("測(cè)試用例2");
    }

    @Disabled
    void Test03(){
        System.out.println("測(cè)試用例3");
    }
    @BeforeAll
    // 需要添加一個(gè)關(guān)鍵字static,是針對(duì)這個(gè)類(lèi)的
    static void Test04(){
        System.out.println("測(cè)試用例BeforeAll");
    }

    @BeforeEach
    void Test06(){
        System.out.println("測(cè)試用例BeforeEach");
    }
    @AfterEach
    void Test07(){
        System.out.println("測(cè)試用例AfterEach");
    }
}

Junit5單元測(cè)試框架詳解

5)ParameterizedTest

表示方法是參數(shù)化測(cè)試,這里我們需要引入對(duì)應(yīng)的依賴(lài),這里和Junit的版本保持一致:

<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-params -->
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-params</artifactId>
    <version>5.9.1</version>
    <scope>test</scope>
</dependency>
@ParameterizedTest
    // 傳入整形參數(shù)
    @ValueSource(ints = {1,2,3})
    void Test08(int num){
        System.out.println(num);
    }

    @ParameterizedTest
    // 傳入字符串
    @ValueSource(strings ={"1","2","3"})
    void Test09(String nums){
        System.out.println(nums);
    }

Junit5單元測(cè)試框架詳解

?

CSV獲取參數(shù):

 @ParameterizedTest
    @CsvFileSource(resources = "test01.csv")
    void Test10(String name){
        System.out.println(name);
    }

Junit5單元測(cè)試框架詳解

?

方法獲取參數(shù),可傳入不同類(lèi)型的參數(shù):

    // 通過(guò)方法名獲取參數(shù)
    @ParameterizedTest
    @MethodSource("method")
    void Test11(int num, String name) {
        System.out.println(num + ":" + name);
    }
    // 輸出不同類(lèi)型的參數(shù)
    public static Stream<Arguments> method() {
        return Stream.of(Arguments.arguments(1, "張三"),
                Arguments.arguments(2, "李四"),
                Arguments.arguments(3, "王五"));
    }

Junit5單元測(cè)試框架詳解

6)TestMethodOrder

按照指定順序來(lái)執(zhí)行測(cè)試用例

// 按照指定順序
//@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
// 按照隨機(jī)順序
@TestMethodOrder(MethodOrderer.Random.class)
public class Junit_Test1 {
    
    // 第三個(gè)執(zhí)行
    @Order(3)
    @Test
    void Test01() {
        System.out.println("測(cè)試用例1");
    }
    // 第一個(gè)執(zhí)行
    @Order(1)
    @Test
    void Test02() {
        System.out.println("測(cè)試用例2");
    }
    // 第二個(gè)執(zhí)行
    @Order(2)
    @Test
    void Test03() {
        System.out.println("測(cè)試用例3");
    }
}

Junit5單元測(cè)試框架詳解


2.3 斷言

斷言(assertions)是測(cè)試方法中的核心部分,用來(lái)對(duì)測(cè)試需要滿足的條件進(jìn)行驗(yàn)證。這些斷言方法都是 orgjuiit.jupiter.api.Assertions的靜態(tài)方法。JUnit5內(nèi)置的斷言可以分成如下幾個(gè)類(lèi)別:檢查業(yè)務(wù)邏輯返回的數(shù)據(jù)是否合理;

1)assertEquals :判斷兩個(gè)對(duì)象或兩個(gè)原始類(lèi)型是否相等

@ParameterizedTest
    @ValueSource(ints = {1})
    void Test04(int num){
        // 第一個(gè)參數(shù)是預(yù)期的,第二個(gè)參數(shù)是實(shí)際的
        Assertions.assertEquals(1,num);
        System.out.println(num);
    }

2)assertNotEquals:判斷兩個(gè)對(duì)象或兩個(gè)原始類(lèi)型是否不相等

@ParameterizedTest
    @ValueSource(ints = {1})
    void Test04(int num){
        // 第一個(gè)參數(shù)是預(yù)期的,第二個(gè)參數(shù)是實(shí)際的
        // 判斷是否相等
        //Assertions.assertEquals(1,num);
        // 判斷不相等
        Assertions.assertNotEquals(2,num);
        System.out.println(num);
    }

3)assertSame:判斷兩個(gè)對(duì)象引用是否指向同一個(gè)對(duì)象

@ParameterizedTest
    @ValueSource(ints = {1})
    void Test04(int num) {
        // 判斷是否指向同一個(gè)對(duì)象
        Object obj1 = new Object();
        Object obj2 = new Object();
        Assertions.assertSame(obj1, obj2, "不是同一個(gè)對(duì)象");
    }

4)assertNotNull:判斷給定的對(duì)象引用是否不為null

@ParameterizedTest
    @ValueSource(ints = {1})
    void Test04(int num){
        // 判斷是否為空
        String str = null;
        Assertions.assertNull(str);
    }

2.4 套件

使用 JUnit5 測(cè)試套件,您可以運(yùn)行分散到多個(gè)測(cè)試類(lèi)和不同包中的測(cè)試;

1)SelectClasses指定通過(guò)class運(yùn)行測(cè)試套件時(shí)要選擇的類(lèi)

@Suite
// 先執(zhí)行Junit_Test.class,再執(zhí)行Junit_Test1.class
@SelectClasses({Junit_Test.class,Junit_Test1.class})
public class RunSuite {

}

1)SelectPackages指定通過(guò)包運(yùn)行測(cè)試套件時(shí)要選擇的類(lèi)

@Suite
@SelectPackages(value = {"Pack1","Pack2"})
public class RunSuite {
}

到這里關(guān)于Junit常用的操作就介紹完了,有問(wèn)題的小伙伴可以私信我,感覺(jué)有幫助的,希望可以留下你們的小贊~~文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-463396.html

到了這里,關(guān)于Junit5單元測(cè)試框架詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Junit5+Mockito單元測(cè)試詳解

    Junit5+Mockito單元測(cè)試詳解

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

    2024年01月17日
    瀏覽(33)
  • SpringBoot2---單元測(cè)試(Junit5)(1)

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

    org.junit.vintage junit-vintage-engine test org.hamcrest hamcrest-core org.springframework.boot spring-boot-starter-test test 現(xiàn)在版本: @SpringBootTest class Boot05WebAdminApplicationTests { @Test void contextLoads() { } } 以前: @SpringBootTest + @RunWith(SpringRunner.class) SpringBoot整合Junit以后。 編寫(xiě)測(cè)試方法:@Test標(biāo)注(注意需要

    2024年04月29日
    瀏覽(17)
  • 13.Springboot整合junit5單元測(cè)試與生成單元測(cè)試覆蓋率

    13.Springboot整合junit5單元測(cè)試與生成單元測(cè)試覆蓋率

    現(xiàn)在基本大公司都要求單元測(cè)試了,保證我們代碼得質(zhì)量,而我司更是要求覆蓋率要達(dá)到60%以上,所以搞一下。 這里有兩個(gè)方法: 1.使用maven自帶得test,idea右側(cè)maven模塊執(zhí)行項(xiàng)目下得test 2.使用cmd命令,在你的項(xiàng)目pom文件所在目錄 ,打開(kāi)cmd,執(zhí)行如下: 結(jié)果如下:打開(kāi)site文

    2024年02月16日
    瀏覽(23)
  • 靜態(tài)方法 單元測(cè)試 springboot+mokito+junit5

    CodecUtils的方法是靜態(tài)類(lèi),使用@InjectMocks不能有用,因?yàn)檫@個(gè)注解只能用于非靜態(tài)的對(duì)象。 想要為靜態(tài)方法寫(xiě)單元測(cè)試,可以使用Mockito.mockStatic(Class classToMock)方法,它可以返回一個(gè)MockedStatic對(duì)象,用于模擬靜態(tài)方法的調(diào)用。 1.導(dǎo)入依賴(lài) 2.單元測(cè)試 可以參考如下地址,了解如何

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

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

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

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

    深度揭秘JUnit5與Mockito的單元測(cè)試神秘面紗

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

    2024年02月02日
    瀏覽(33)
  • SpringBoot 實(shí)戰(zhàn):JUnit5+MockMvc+Mockito 做好單元測(cè)試

    SpringBoot 實(shí)戰(zhàn):JUnit5+MockMvc+Mockito 做好單元測(cè)試

    因?yàn)槔^承了 spring-boot-starter-parent ,所以我們依賴(lài)的 spring-boot-starter-test 不需要寫(xiě)具體的版本,可以直接集成父級(jí)的版本定義。其中, spring-boot-starter-web 是用于提供 REST API 的 web 容器, spring-boot-starter-test 可以提供各種測(cè)試框架的, spring-boot-maven-plugin 是將 SpringBoot 應(yīng)用打包為

    2024年04月15日
    瀏覽(28)
  • 在 Java 中使用JUnit5進(jìn)行單元測(cè)試和自動(dòng)化測(cè)試

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

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

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

    2024年02月16日
    瀏覽(21)
  • 如何在 Java 中使用JUnit5進(jìn)行單元測(cè)試和自動(dòng)化測(cè)試

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

    2024年02月05日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包