亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
1。編寫(xiě)可測(cè)試的代碼:依賴(lài)注入和鬆散耦合
2。使用Junit 5進(jìn)行結(jié)構(gòu)化的可讀測(cè)試
3。與Mockito的模擬依賴(lài)關(guān)係
4。清潔,可維護(hù)測(cè)試的最佳實(shí)踐
最後的想法
首頁(yè) Java java教程 用Junit 5和Mockito編寫(xiě)可測(cè)試的Java代碼

用Junit 5和Mockito編寫(xiě)可測(cè)試的Java代碼

Jul 28, 2025 am 03:24 AM
mockito JUnit 5

使用依賴(lài)注入來(lái)編寫(xiě)可測(cè)試的代碼,以啟用鬆散的耦合,如用注射量代替硬編碼的依賴(lài)關(guān)係所見(jiàn); 2。使用Junit 5進(jìn)行結(jié)構(gòu)化測(cè)試,並具有@beforeach,@test和assertthrows之類(lèi)的功能,以確保清潔,可讀和可靠的測(cè)試; 3。使用mockito使用mock(),()。 thenreturn()和驗(yàn)證()以隔離行為並避免依賴(lài)對(duì)實(shí)際系統(tǒng)的模擬外部依賴(lài)關(guān)係; 4。遵循最佳實(shí)踐,例如描述性測(cè)試名稱(chēng),AAA模式,避免實(shí)施細(xì)節(jié)測(cè)試,保持測(cè)試獨(dú)立,不是過(guò)度嵌入式以及覆蓋邊緣案例以確??删S護(hù)有效的測(cè)試;最終,設(shè)計(jì)可測(cè)試性可提高代碼質(zhì)量,從而更容易更改,調(diào)試和信任。

用Junit 5和Mockito編寫(xiě)可測(cè)試的Java代碼

編寫(xiě)可測(cè)試的Java代碼是構(gòu)建可維護(hù),可靠應(yīng)用程序的關(guān)鍵技能。將Junit 5作為現(xiàn)代測(cè)試框架和用於模擬依賴(lài)關(guān)係的Mockito,您可以編寫(xiě)乾淨(jìng),可靠的單元測(cè)試,以驗(yàn)證行為而不依賴(lài)外部系統(tǒng)。這是如何有效地構(gòu)建代碼和測(cè)試的方法。

用Junit 5和Mockito編寫(xiě)可測(cè)試的Java代碼

1。編寫(xiě)可測(cè)試的代碼:依賴(lài)注入和鬆散耦合

可檢驗(yàn)的代碼的基礎(chǔ)是依賴(lài)注入(DI)鬆散耦合。避免用硬編碼的依賴(lài)關(guān)係或靜態(tài)調(diào)用,使測(cè)試變得困難。

不好的例子(很難測(cè)試):

用Junit 5和Mockito編寫(xiě)可測(cè)試的Java代碼
公共班訂單服務(wù){(diào)
    私有電子郵件服務(wù)電子郵件服務(wù)=新電子郵件服務(wù)(); //硬依賴(lài)性

    公共無(wú)效過(guò)程(訂單訂單){
        //邏輯
        電子郵件服務(wù)。
    }
}

這緊密地將OrderService耦合到EmailService ,因此如果不實(shí)際發(fā)送電子郵件,就無(wú)法測(cè)試process() 。

良好的方法(可用於DI測(cè)試):

用Junit 5和Mockito編寫(xiě)可測(cè)試的Java代碼
公共班訂單服務(wù){(diào)
    私人最終電子郵件服務(wù)電子郵件服務(wù);

    公共訂單服務(wù)(電子郵件服務(wù)電子郵件服務(wù)){
        this.emailService = emailService;
    }

    公共無(wú)效過(guò)程(訂單訂單){
        //業(yè)務(wù)邏輯
        電子郵件服務(wù)。
    }
}

現(xiàn)在,您可以在使用Mockito進(jìn)行測(cè)試期間注入模擬的EmailService 。


2。使用Junit 5進(jìn)行結(jié)構(gòu)化的可讀測(cè)試

Junit 5提供了現(xiàn)代語(yǔ)法,具有改進(jìn)的生命週期管理和表達(dá)性的主張。

示例測(cè)試類(lèi):

導(dǎo)入org.junit.jupiter.api。 *;
導(dǎo)入靜態(tài)org.mockito.mockito。 *;
導(dǎo)入靜態(tài)org.junit.jupiter.api.assertions。 *;

@testinstance(testinstance.lifecycle.per_method)
class orderServicEtest {

    私人電子郵件服務(wù)電子郵件服務(wù);
    私人訂單服務(wù)訂單;

    @BeForeeach
    void setup(){
        emailService =模擬(EmailService.Class);
        訂單服務(wù)=新訂單服務(wù)(電子郵件服務(wù));
    }

    @測(cè)試
    @displayname(“處理訂單時(shí)應(yīng)發(fā)送確認(rèn)電子郵件”)
    void應(yīng)該sendemailonProcess(){
        //給定
        訂單訂單=新訂單(“ 123”,100.0);

        // 什麼時(shí)候
        OrderService.Process(order);

        // 然後
        驗(yàn)證(電子郵件服務(wù),時(shí)間(1))。 sendConfircation(訂單);
    }

    @測(cè)試
    @displayname(“應(yīng)該拋出空訂單的例外”)
    void syredthrowexceptionfornullorder(){
        //何時(shí)及
        assertthrows(illegalargumentException.class,() - > {
            OrderService.Process(null);
        });
    }
}

關(guān)鍵Junit 5功能:

  • @BeforeEach - 在每個(gè)測(cè)試之前運(yùn)行(清潔狀態(tài))
  • @Test - 標(biāo)記測(cè)試方法
  • @DisplayName - 提高測(cè)試報(bào)告中的可讀性
  • assertThrows - 驗(yàn)證預(yù)期例外
  • verify() - 檢查與模擬的互動(dòng)

3。與Mockito的模擬依賴(lài)關(guān)係

Mockito允許您模擬外部服務(wù)(例如數(shù)據(jù)庫(kù),API,電子郵件),因此您的單元測(cè)試快速運(yùn)行和隔離行為。

常見(jiàn)的摩索圖模式:

  • 模擬創(chuàng)建: mock(ClassName.class)
  • 固執(zhí)方法: when(mock.method()).thenReturn(value)
  • 驗(yàn)證交互: verify(mock).method()

示例:固定存儲(chǔ)庫(kù)調(diào)用

公共類(lèi)用戶(hù)服務(wù){(diào)
    私有最終用戶(hù)式用戶(hù)repository;

    public userservice(userrepository userrepository){
        this.userrepository = userrepository;
    }

    公共用戶(hù)finduserbyid(字符串ID){
        返回userrepository.findbyid(id)
                。
    }
}

使用Mockito進(jìn)行測(cè)試:

 @測(cè)試
@displayname(“在存儲(chǔ)庫(kù)中找到時(shí)應(yīng)返回用戶(hù)”)
void syredurnuserwhenfound(){
    //給定
    userrepository userrepository =模擬(userrepository.class);
    用戶(hù)模擬器=新用戶(hù)(“ 1”,“ Alice”);
    當(dāng)(userrepository.findbyid(“ 1”))。

    uservice userVice = new userService(userRepository);

    // 什麼時(shí)候
    用戶(hù)結(jié)果= uservice.finduserbyId(“ 1”);

    // 然後
    assertequals(“ alice”,result.getName());
    驗(yàn)證(userrepository).findbyId(“ 1”);
}

您僅測(cè)試UserService中的邏輯,而不是實(shí)際數(shù)據(jù)庫(kù)。


4。清潔,可維護(hù)測(cè)試的最佳實(shí)踐

遵循這些準(zhǔn)則以保持測(cè)試有效:

  • 使用描述性測(cè)試名稱(chēng)
    testProcess() shouldThrowExceptionWhenOrderIsNull() ()。

  • 遵循AAA模式
    為了清楚起見(jiàn),將測(cè)試組織為安排,採(cǎi)取行動(dòng)主張塊。

  • 避免測(cè)試實(shí)施詳細(xì)信息
    測(cè)試方法的作用,而不是它的作用。不要驗(yàn)證內(nèi)部私人方法。

  • 保持測(cè)試獨(dú)立和快速
    測(cè)試之間沒(méi)有共享狀態(tài)。改用@BeforeEach或工廠(chǎng)方法。

  • 不要過(guò)度奇蹟
    僅模擬外部依賴(lài)。不要模擬價(jià)值對(duì)像或簡(jiǎn)單的實(shí)用程序。

  • 測(cè)試邊緣案例
    空輸入,空收集,例外 - 這些是常見(jiàn)的故障點(diǎn)。


最後的想法

編寫(xiě)可測(cè)試的Java代碼不僅僅是添加測(cè)試,而是要牢記測(cè)試性設(shè)計(jì)課程。使用依賴(lài)注入,偏愛(ài)組成而不是實(shí)例化,並乾淨(jìng)地分開(kāi)關(guān)注。

使用Junit 5和Mockito,您將獲得強(qiáng)大的工具:

  • 編寫(xiě)表現(xiàn)出可讀的測(cè)試
  • 隔離行為單位
  • 安全模擬依賴(lài)項(xiàng)

結(jié)果?代碼更容易更改,調(diào)試和信任。

基本上,如果您不能輕鬆測(cè)試,請(qǐng)重新考慮設(shè)計(jì)。

以上是用Junit 5和Mockito編寫(xiě)可測(cè)試的Java代碼的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線(xiàn)上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門(mén)話(huà)題

Mockito框架中註解如何簡(jiǎn)化樁生成和驗(yàn)證? Mockito框架中註解如何簡(jiǎn)化樁生成和驗(yàn)證? May 06, 2024 pm 05:48 PM

Mockito框架註解簡(jiǎn)化了樁的生成和驗(yàn)證過(guò)程:@Mock:自動(dòng)產(chǎn)生和管理模擬物件。 @Captor:捕捉傳遞給模擬方法的參數(shù)值。 @InjectMocks:自動(dòng)將模擬物件注入到被測(cè)類(lèi)別中。 @Spy:建立部分樁對(duì)象,保留原始方法實(shí)作。

Java後端開(kāi)發(fā):使用Mockito進(jìn)行API單元測(cè)試模擬 Java後端開(kāi)發(fā):使用Mockito進(jìn)行API單元測(cè)試模擬 Jun 17, 2023 am 08:27 AM

隨著網(wǎng)路的普及,Java後端開(kāi)發(fā)已經(jīng)成為了一個(gè)重要的領(lǐng)域。在開(kāi)發(fā)過(guò)程中,單元測(cè)試是非常關(guān)鍵的一步,而Mockito是優(yōu)秀的API單元測(cè)試模擬工具。本文將介紹Java後端開(kāi)發(fā)中Mockito的使用方法。什麼是Mockito? Mockito是一個(gè)Java框架,它以Mock物件的形式提供API單元測(cè)試模擬功能。 Mock對(duì)像是指一些虛擬對(duì)象,它們的行為被我們?cè)O(shè)

JAX-RS 與單元測(cè)試:確保你的 RESTful 程式碼的穩(wěn)健性 JAX-RS 與單元測(cè)試:確保你的 RESTful 程式碼的穩(wěn)健性 Feb 29, 2024 pm 08:31 PM

簡(jiǎn)介RESTfulapi越來(lái)越普及,因此確保它們的穩(wěn)健性變得至關(guān)重要。單元測(cè)試是驗(yàn)證程式碼功能和行為的有效方法,對(duì)於RESTfulAPI尤其如此。本文將介紹如何使用JAX-RS和單元測(cè)試框架(例如Mockito和RESTAssured)來(lái)測(cè)試RESTful程式碼。 JAX-RS簡(jiǎn)介JAX-RS是一種用來(lái)建立RESTfulAPI的JavaAPI。它提供了一組用於定義資源、處理Http請(qǐng)求和回應(yīng)的註解和類(lèi)別。使用JAX-RS,開(kāi)發(fā)人員可以輕鬆建立RESTful服務(wù),這些服務(wù)可以與各種客戶(hù)端通訊。單元測(cè)試

Java單元測(cè)試Mockito如何用 Java單元測(cè)試Mockito如何用 Apr 19, 2023 pm 11:22 PM

Mockito簡(jiǎn)介呼叫mock物件的方法時(shí),不會(huì)執(zhí)行真實(shí)的方法,而是傳回類(lèi)型的預(yù)設(shè)值,如object傳回null,int回傳0等,否則透過(guò)指定when(方法).thenReturn(value)來(lái)指定方法的返回值。同時(shí)mock物件可以進(jìn)行追蹤,使用verify方法看是否已經(jīng)被呼叫過(guò)。而spy對(duì)象,預(yù)設(shè)會(huì)執(zhí)行真實(shí)方法,返回值可以透過(guò)when.thenReturn進(jìn)行覆寫(xiě)。可見(jiàn)mock只要避開(kāi)了執(zhí)行一些方法,直接回傳指定的值,方便做其他測(cè)試。 Service測(cè)試用例需要的依賴(lài)junitjunit4.1

Mockito與JUnit單元測(cè)試框架:如何進(jìn)行協(xié)作 Mockito與JUnit單元測(cè)試框架:如何進(jìn)行協(xié)作 Apr 18, 2024 pm 01:36 PM

Mockito和JUnit強(qiáng)強(qiáng)聯(lián)手,提升單元測(cè)試效率:Mockito允許創(chuàng)建測(cè)試樁和模擬對(duì)象,用於驗(yàn)證程式碼的預(yù)期互動(dòng)。 JUnit提供框架,讓測(cè)試編寫(xiě)和運(yùn)作更為便利。當(dāng)兩者結(jié)合使用時(shí),您可以建立可讀性高且維護(hù)性良好的測(cè)試,以有效驗(yàn)證程式碼的正確性。

如何用Mockito單元測(cè)試Java函數(shù)? 如何用Mockito單元測(cè)試Java函數(shù)? Apr 27, 2024 pm 03:36 PM

使用Mockito測(cè)試Java函數(shù)的步驟:新增Mockito依賴(lài)項(xiàng)。建立模擬物件並設(shè)定模擬行為。呼叫要測(cè)試的函數(shù)。斷言函數(shù)的預(yù)期行為。使用verify()驗(yàn)證模擬的交互作用。

如何在PHP中使用JUnit和Mockito進(jìn)行測(cè)試驅(qū)動(dòng)開(kāi)發(fā) 如何在PHP中使用JUnit和Mockito進(jìn)行測(cè)試驅(qū)動(dòng)開(kāi)發(fā) Jun 25, 2023 pm 02:25 PM

隨著軟體開(kāi)發(fā)的不斷進(jìn)步,測(cè)試驅(qū)動(dòng)開(kāi)發(fā)(TDD)已成為越來(lái)越受歡迎的開(kāi)發(fā)模式。在TDD的過(guò)程中,測(cè)試成為了開(kāi)發(fā)過(guò)程的核心,而JUnit和Mockito則是兩種常用的測(cè)試框架。在PHP開(kāi)發(fā)中,如何使用JUnit和Mockito進(jìn)行TDD呢?下面將給出一個(gè)詳細(xì)的介紹。一、JUnit和Mockito簡(jiǎn)介JUnit是Java語(yǔ)言的測(cè)試框架。它可以幫助Java

Java JUnit 的終極指南:掌握單元測(cè)試 Java JUnit 的終極指南:掌握單元測(cè)試 Feb 19, 2024 am 11:36 AM

簡(jiǎn)介JUnit是一個(gè)用於Java程式碼單元測(cè)試的開(kāi)源框架,由ErichGamma和KentBeck創(chuàng)立於1997年。它允許開(kāi)發(fā)者編寫(xiě)可驗(yàn)證程式碼正確性的測(cè)試案例。透過(guò)單元測(cè)試,開(kāi)發(fā)者可以確保程式碼在單一單元層級(jí)按預(yù)期運(yùn)作,從而提高程式碼的健全性和可靠性?;居梅↗Unit測(cè)試用例是一個(gè)以@Test註釋的方法,該方法通常以test開(kāi)頭。它包含以下部分:設(shè)定:在@Before方法中,為每個(gè)測(cè)試案例設(shè)定必要的狀態(tài)。測(cè)試:在@Test方法中,執(zhí)行要測(cè)試的邏輯並驗(yàn)證結(jié)果。清理:在@After方法中,在每個(gè)測(cè)試案例

See all articles