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

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

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

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

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

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

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

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

1。編寫可測(cè)試的代碼:依賴注入和松散耦合

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

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

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

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

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

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

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

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

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

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


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

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

示例測(cè)試類:

導(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的模擬依賴關(guān)系

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

常見的摩索圖模式:

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

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

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

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

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

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

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

    uservice userVice = new userService(userRepository);

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

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

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


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

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

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

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

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

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

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

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


最后的想法

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

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

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

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

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

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

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系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

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

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集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

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

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

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

隨著互聯(lián)網(wǎng)的普及,Java后端開發(fā)已經(jīng)成為了一個(gè)重要的領(lǐng)域。在開發(fā)過程中,單元測(cè)試是非常關(guān)鍵的一步,而Mockito是一款優(yōu)秀的API單元測(cè)試模擬工具。本文將介紹Java后端開發(fā)中Mockito的使用方法。什么是Mockito?Mockito是一個(gè)Java框架,它以Mock對(duì)象的形式提供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越來越普及,因此確保它們的穩(wěn)健性變得至關(guān)重要。單元測(cè)試是驗(yàn)證代碼功能和行為的一種有效方法,對(duì)于RESTfulAPI尤其如此。本文將介紹如何使用JAX-RS和單元測(cè)試框架(例如Mockito和RESTAssured)來測(cè)試RESTful代碼。JAX-RS簡(jiǎn)介JAX-RS是一種用于構(gòu)建RESTfulAPI的JavaAPI。它提供了一組用于定義資源、處理Http請(qǐng)求和響應(yīng)的注解和類。使用JAX-RS,開發(fā)人員可以輕松創(chuàng)建RESTful服務(wù),這些服務(wù)可以與各種客戶端通信。單元測(cè)試

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

Mockito簡(jiǎn)介調(diào)用mock對(duì)象的方法時(shí),不會(huì)執(zhí)行真實(shí)的方法,而是返回類型的默認(rèn)值,如object返回null,int返回0等,否則通過指定when(方法).thenReturn(value)來指定方法的返回值。同時(shí)mock對(duì)象可以進(jìn)行跟蹤,使用verify方法看是否已經(jīng)被調(diào)用過。而spy對(duì)象,默認(rèn)會(huì)執(zhí)行真實(shí)方法,返回值可以通過when.thenReturn進(jìn)行覆蓋。可見mock只要避開了執(zhí)行一些方法,直接返回指定的值,方便做其他測(cè)試。Service測(cè)試用例需要的依賴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ù)期交互。JUnit提供框架,使測(cè)試編寫和運(yùn)行更為便捷。當(dāng)兩者結(jié)合使用時(shí),您可以創(chuàng)建可讀性高且維護(hù)性良好的測(cè)試,有效驗(yàn)證代碼的正確性。

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

使用Mockito測(cè)試Java函數(shù)的步驟:添加Mockito依賴項(xiàng)。創(chuàng)建模擬對(duì)象并設(shè)置模擬行為。調(diào)用要測(cè)試的函數(shù)。斷言函數(shù)的預(yù)期行為。使用verify()驗(yàn)證模擬的交互。

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

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

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

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

See all articles