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

Java高級(jí)技術(shù) 單元測(cè)試(JUnit4)

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


JUnit總覽

junit4單元測(cè)試,JavaSE進(jìn)階,單元測(cè)試,java,junit,junit4,JUnit

一、什么是單元測(cè)試?

所謂單元測(cè)試,就是針對(duì)最小的功能單元,編寫測(cè)試代碼對(duì)其進(jìn)行正確性測(cè)試。

我們之前一直使用的測(cè)試便是通過main方法來實(shí)現(xiàn),但在main方法中寫測(cè)試代碼有如下的幾個(gè)問題存在:

  • 只能在main方法編寫測(cè)試代碼,去調(diào)用其他方法進(jìn)行測(cè)試。
  • 無法實(shí)現(xiàn)自動(dòng)化測(cè)試,一個(gè)方法測(cè)試失敗,可能影響其他方法的測(cè)試。
  • 無法得到測(cè)試的報(bào)告,需要程序員自己去觀察測(cè)試是否成功。

為了測(cè)試更加方便,有一些第三方的公司或者組織提供了很好用的測(cè)試框架,其中一種便是JUnit測(cè)試框架。

JUnit是第三方公司開源出來的框架,用于對(duì)代碼進(jìn)行單元測(cè)試的工具(IDEA已經(jīng)繼承了JUnit框架)。

相比于在main方法中測(cè)試,JUnit有如下的優(yōu)點(diǎn):

  • 可以靈活的編寫測(cè)試代碼,可以針對(duì)某個(gè)方法執(zhí)行測(cè)試,也支持一鍵完成對(duì)全部方法的自動(dòng)化測(cè)試,且各自獨(dú)立。
  • 不需要人為分析測(cè)試的結(jié)果,會(huì)自動(dòng)生成測(cè)試報(bào)告出來。

二、JUnit的使用與入門案例

因?yàn)镴unit是第三方提供的,所以在使用之前,我們需要導(dǎo)入到項(xiàng)目之中才能使用,具體步驟如下所示:

  1. 將Junit框架的jar包導(dǎo)入到項(xiàng)目中(注意:IDEA集成了Junit框架,不需要手工導(dǎo)入)。
  2. 為需要測(cè)試的業(yè)務(wù)類,定義對(duì)應(yīng)的測(cè)試類,并為每個(gè)業(yè)務(wù)方法,編寫對(duì)應(yīng)的測(cè)試方法(必須:公共、無參、無返回值)。
  3. 測(cè)試方法上必須聲明@Test注解,然后在測(cè)試方法中,編寫代碼調(diào)用被測(cè)試的業(yè)務(wù)方法進(jìn)行測(cè)試。
  4. 開始測(cè)試:選中測(cè)試方法,右鍵選擇"Junit運(yùn)行",如果測(cè)試通過,則為綠色;如果測(cè)試失敗,則為紅色。

使用演示

先準(zhǔn)備一個(gè)類:Utils工具類(實(shí)現(xiàn)兩數(shù)最大值)

public class Utils {
    public static int max(int num1,int num2) {
        return num1 > num2? num1 : num2;
    }
}

再準(zhǔn)備一個(gè)測(cè)試類,測(cè)試Utils工具類中的方法能否正常使用。

public class showTest {
    @Test
    public void show(){
        int num = 10;
        int num2 = 30;
        System.out.println("兩數(shù)最大值為:" + Utils.max(num,num2));
    }
}

在寫完代碼后,測(cè)試方法左邊會(huì)出現(xiàn)一個(gè)綠色的三角形按鈕,點(diǎn)擊按鈕就可以測(cè)試方法。

junit4單元測(cè)試,JavaSE進(jìn)階,單元測(cè)試,java,junit,junit4,JUnit

運(yùn)行效果

junit4單元測(cè)試,JavaSE進(jìn)階,單元測(cè)試,java,junit,junit4,JUnit


三、JUnit斷言機(jī)制

斷言機(jī)制(assertions):是測(cè)試方法中的核心部分,用來對(duì)測(cè)試需要滿足的條件進(jìn)行驗(yàn)證。這些斷言方法都是org.junit.jupiter.api.Assertions的靜態(tài)方法。

而所謂斷言,意思是程序員可以預(yù)測(cè)程序的運(yùn)行結(jié)果,檢查程序的運(yùn)行結(jié)果是否與預(yù)期一致。

  • 簡單斷言

介紹一種簡單的斷言方法。

現(xiàn)在在showTest中新增一個(gè)方法:assertEquals(判斷兩個(gè)對(duì)象或兩個(gè)原始類型是否相等)。

public class showTest {
    @Test
    public void show(){
        int num = 10;
        int num2 = 30;
        assertEquals("不等于",10,Utils.max(num,num2));
        System.out.println("兩數(shù)最大值為:" + Utils.max(num,num2));
    }
}

運(yùn)行效果

junit4單元測(cè)試,JavaSE進(jìn)階,單元測(cè)試,java,junit,junit4,JUnit
注意:

若斷言失敗,后面的代碼都不會(huì)執(zhí)行,所以斷言后的輸出語句并沒有執(zhí)行。

  • 數(shù)組斷言

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

public class showTest {
    @Test
    public void show(){
        assertArrayEquals("內(nèi)容不相等",new int[]{3,2},new int[]{2,2});
    }
}

運(yùn)行效果

junit4單元測(cè)試,JavaSE進(jìn)階,單元測(cè)試,java,junit,junit4,JUnit


四、JUnit框架的常用注解

JUnit的啟動(dòng)必須要有@Test注解,它的作用是用來標(biāo)記一個(gè)方法為測(cè)試方法,測(cè)試才能啟動(dòng)執(zhí)行。

在JUnit中,除了@Test注解,還有一些其他的注解:

junit4單元測(cè)試,JavaSE進(jìn)階,單元測(cè)試,java,junit,junit4,JUnit

@Before:每個(gè)測(cè)試方法執(zhí)行之前執(zhí)行

@Before
    public void before(){
        System.out.println("before執(zhí)行了");
    }

    @Test
    public void test1(){
        System.out.println("test1執(zhí)行");
    }

    @Test
    public void test2(){
        System.out.println("test2執(zhí)行");
    }

運(yùn)行效果

junit4單元測(cè)試,JavaSE進(jìn)階,單元測(cè)試,java,junit,junit4,JUnit


@After:每個(gè)測(cè)試方法之后執(zhí)行。

     @Test
    public void test1(){
        System.out.println("test1執(zhí)行");
    }

    @Test
    public void test2(){
        System.out.println("test2執(zhí)行");
    }

    @After
    public void after(){
        System.out.println("after執(zhí)行了");
    }   

運(yùn)行效果

junit4單元測(cè)試,JavaSE進(jìn)階,單元測(cè)試,java,junit,junit4,JUnit


@BeforeClass :修飾靜態(tài)方法,只會(huì)在所有測(cè)試方法之前執(zhí)行一次。

@BeforeClass
    public static void before(){
        System.out.println("before執(zhí)行了");
    }

    @Test
    public void test1(){
        System.out.println("test1執(zhí)行");
    }

    @Test
    public void test2(){
        System.out.println("test2執(zhí)行");
    }

運(yùn)行效果

junit4單元測(cè)試,JavaSE進(jìn)階,單元測(cè)試,java,junit,junit4,JUnit


@AfterClass : 修飾靜態(tài)方法,只會(huì)在所有測(cè)試方法之后執(zhí)行一次。

    @Test
    public void test1(){
        System.out.println("test1執(zhí)行");
    }

    @Test
    public void test2(){
        System.out.println("test2執(zhí)行");
    }

    @After
    public void after(){
        System.out.println("after執(zhí)行了");
    }

運(yùn)行效果

junit4單元測(cè)試,JavaSE進(jìn)階,單元測(cè)試,java,junit,junit4,JUnit


● 注解的應(yīng)用場(chǎng)景

假如我想在每個(gè)測(cè)試方法中使用Socket對(duì)象,并且用完之后,要把Socket關(guān)閉,這個(gè)時(shí)候就可以使用注解來完成。

public class jUnitTest{
    private static Socket socket;
    @Before
    public void test1(){
        System.out.println("--> test1 Before 執(zhí)行了");
    }
    @BeforeClass
    public static void test11(){
        System.out.println("--> test11 BeforeClass 執(zhí)行了");
        //初始化Socket對(duì)象
        socket = new Socket();
    }
    @After
    public void test2(){
        System.out.println("--> test2 After 執(zhí)行了");
    }
    @AfterCalss
    public static void test22(){
        System.out.println("--> test22 AfterCalss 執(zhí)行了");
         //關(guān)閉Socket
        socket.close();
    }
}

● 注解小結(jié)

1.被@BeforeClass標(biāo)記的方法,執(zhí)行在所有方法之前
2.被@AfterCalss標(biāo)記的方法,執(zhí)行在所有方法之后
3.被@Before標(biāo)記的方法,執(zhí)行在每一個(gè)@Test方法之前
4.被@After標(biāo)記的方法,執(zhí)行在每一個(gè)@Test方法之后

五、JUnit5的注解

在JUnit5中對(duì)注釋做了更新,但作用是相同的,只是改了方法名。

junit4單元測(cè)試,JavaSE進(jìn)階,單元測(cè)試,java,junit,junit4,JUnit文章來源地址http://www.zghlxwxcb.cn/news/detail-769928.html

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

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(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)文章

  • IDEA使用Junit4進(jìn)行單元測(cè)試

    IDEA使用Junit4進(jìn)行單元測(cè)試

    ? ? ? ? 單元測(cè)試不僅能幫我們驗(yàn)證代碼邏輯,還可以通過執(zhí)行時(shí)間進(jìn)行快速篩選不合格代碼并進(jìn)行優(yōu)化。核心模塊的代碼的單元測(cè)試覆蓋率要達(dá)到100%,其他模塊代碼的單元測(cè)試覆蓋率需要達(dá)到60%。下面將介紹在IDEA上使用Junit4進(jìn)行單元測(cè)試的方法: 一、安裝JunitGenerator2插件

    2023年04月16日
    瀏覽(24)
  • Junit4 + Mockito進(jìn)行單元測(cè)試實(shí)戰(zhàn)案例

    Junit4 + Mockito進(jìn)行單元測(cè)試實(shí)戰(zhàn)案例

    ? 實(shí)戰(zhàn)代碼案例: ??????????? 注意:idea2021.3.3之前的版本都搜索不到這個(gè)插件。 使用TestMe自動(dòng)生成單元測(cè)試代碼: 不是自動(dòng)化執(zhí)行的單元測(cè)試都是無意義的,項(xiàng)目中那么多單測(cè),難道一個(gè)一個(gè)點(diǎn)嗎? 引入maven-surefire-plugin插件用于自動(dòng)化執(zhí)行單測(cè)。 include里表

    2024年02月16日
    瀏覽(21)
  • 在Idea中使用Junit4進(jìn)行單元測(cè)試

    在Idea中使用Junit4進(jìn)行單元測(cè)試

    #初學(xué)者,為了對(duì)知識(shí)進(jìn)行鞏固寫這個(gè)文章,有問題歡迎指出,歡迎討論 在Setting - Plugins - Marketplace中搜索JUnit,點(diǎn)擊Apply后重啟Idea 創(chuàng)建的類和文件夾 按照這個(gè)順序就可以啦 點(diǎn)擊OK后,在我們的Test文件夾中就出現(xiàn)了一個(gè)測(cè)試文件

    2024年02月03日
    瀏覽(19)
  • 基于Junit4+Mockito+PowerMock實(shí)現(xiàn)Controller+Service的單元測(cè)試

    基于Junit4+Mockito+PowerMock實(shí)現(xiàn)Controller+Service的單元測(cè)試

    一 導(dǎo)入的依賴 二 依賴版本 三 controller測(cè)試示例代碼 ? ? ? controller ? ? ? ? controllerTest ? ? ? ? 測(cè)試結(jié)果:覆蓋率100% ? ? ? ? 帶異常的Controller ? ? ? ? 帶異常提示的ControllerTest ? ? ? ? 測(cè)試結(jié)果,覆蓋率100% ? 三 service測(cè)試示例代碼 ? ? ? ? service ? ? ? ? serviceTest ???

    2024年02月14日
    瀏覽(28)
  • Tests run: 0, Failures: 0, Errors: 0, Skipped: 0【Junit4 升級(jí) Junit5】【Maven 檢測(cè)不到單元測(cè)試問題】

    由于測(cè)試容器,有殘留的 JUnit4 依賴項(xiàng)。能夠通過顯式將 JUnit5 設(shè)置為萬無一失插件的依賴項(xiàng)來解決此問題,如下所示:

    2024年04月27日
    瀏覽(23)
  • Java高級(jí)技術(shù)(單元測(cè)試)

    Java高級(jí)技術(shù)(單元測(cè)試)

    一,概括 ? ? 二,junit ?? 三,案例 (1),實(shí)驗(yàn)類 ?(2),測(cè)試類 ? 四,常見注解 ? 五,案例 (1),測(cè)試類 (2),結(jié)果 ? ?六,常見注解注意: ? ? ? junit5版本的注解名字與junit4不同

    2024年02月04日
    瀏覽(19)
  • Java高級(jí)技術(shù):單元測(cè)試、反射、注解

    Java高級(jí)技術(shù):單元測(cè)試、反射、注解

    目錄 單元測(cè)試 單元測(cè)試概述 單元測(cè)試快速入門 單元測(cè)試常用注解 反射 反射概述 反射獲取類對(duì)象 反射獲取構(gòu)造器對(duì)象 反射獲取成員變量對(duì)象 反射獲取方法對(duì)象 反射的作用-繞過編譯階段為集合添加數(shù)據(jù) 反射的作用-通用框架的底層原理 注解 注解概述 自定義注解 元注解

    2024年01月16日
    瀏覽(21)
  • Spring整合Junit4

    好處1:不需要自己創(chuàng)建IOC容器對(duì)象了 好處2:任何需要的bean都可以在測(cè)試類中直接享受自動(dòng)裝配 ①加入依賴 ②創(chuàng)建測(cè)試類

    2024年02月20日
    瀏覽(24)
  • springboot框架(2):整合junit4

    springboot框架(2):整合junit4

    junit用于單元測(cè)試。 新建springboot項(xiàng)目(不依賴任何插件,所以不需要選擇任何插件) 引入test依賴(新建項(xiàng)目自動(dòng)引入了這個(gè)依賴,如果沒有這個(gè)依賴,才需要添加) 高版本的springboot(例如:2.6.5)只有junit5沒有引入junit4,所以需要導(dǎo)入依賴(如果出現(xiàn)import灰色時(shí),請(qǐng)檢查是不是需要導(dǎo)

    2023年04月26日
    瀏覽(19)
  • Junit4 一直處于運(yùn)行中的排查過程

    新買了一個(gè)Macbook Pro . 之前的工程搬家過來, 這天要跑個(gè)單元測(cè)試。 發(fā)現(xiàn)Junit4 一直處于運(yùn)行中。沒有錯(cuò)誤信息,沒有用例執(zhí)行結(jié)果。遂開始排查原因。 這里插一句,蘋果芯片的Mbp還是很好用的,除了性能夠用之外,最主要是安靜+不熱。 這對(duì)比我之前的i7版本的真是太明顯了

    2024年02月11日
    瀏覽(22)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包