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

JAVA測試類注解以及Mock測試

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

我們在項目中,經(jīng)常要編寫一個測試類XXXXXTest,其中一般會用到以下注解:

一、常用注解

1. @RunWith(PowerMockRunner.class)

JUnit將會調(diào)用@RunWith中指定的測試執(zhí)行類而不是JUnit默認(rèn)的執(zhí)行類。

2.@PrepareForTest({ExampleTestServer.class})

? ? ? ? 2.1 當(dāng)使用Mockito.whenNew方法時(下面的Mock測試),必須加此注解,此注解里寫的類是需要mock的new對象代碼所在的類。

? ? ? ? 2.2 當(dāng)需要使用mock final、mock static方法、mock private方法、mock系統(tǒng)類的靜態(tài)方法時,必須加此注解,此注解里寫的分別是該方法所在的類。

3.@InjectMocks

創(chuàng)建一個實例,其余用@Mock(或@Spy)注解創(chuàng)建的mock將被注入到用該實例中。

(通常在真正運行時,會使用@Autowired等方式完成自動注入。但是在單元測試中,沒有啟動spring框架,此時就需要@InjectMocks來完成依賴注入,@InjectMocks會將帶有@Mock以及@Spy注解的對象注入到被測試的目標(biāo)類中:

  • 在進行單元測試時,不應(yīng)初始化 Spring 上下文。因此,請@Autowired。
  • 在進行集成測試時,應(yīng)使用真正的依賴項。所以去掉Mock)

4.@Mock

@Mock:創(chuàng)建一個Mock。

5.@Test

被打上該注解的方法,表示為一個測試方法。

二、Mock測試

1.Stub打樁

Mockito 中 when().thenReturn(); 這種語法來定義對象方法和參數(shù)(輸入),然后在 thenReturn 中指定結(jié)果(輸出)。此過程稱為 Stub 打樁 。一旦這個方法被 stub 了,就會一直返回這個 stub 的值。

Mockito.when(request.getParameter("csdn")).thenReturn("lirenji");

注意:

  • 對于 static 和 final 方法, Mockito 無法對其 when(…).thenReturn(…) 操作。
  • 當(dāng)我們連續(xù)兩次為同一個方法使用 stub 的時候,他只會只用最新的一次。

2.迭代打樁

第一次調(diào)用 i.next() 將返回 ”Hello”,第二次的調(diào)用會返回 ”World”。

// 方法一   (三個方法等價)
when(i.next()).thenReturn("Hello").thenReturn("World");
// 方法二
when(i.next()).thenReturn("Hello", "World");
// 方法三
when(i.next()).thenReturn("Hello"); when(i.next()).thenReturn("World");

3.拋出異常

//一般情況
when(i.next()).thenThrow(new RuntimeException());
 // void 方法的
doThrow(new RuntimeException()).when(i).remove();
// 迭代風(fēng)格  (第一次調(diào)用 remove 方法什么都不做,第二次調(diào)用拋出 RuntimeException 異常)
doNothing().doThrow(new RuntimeException()).when(i).remove(); 

4.Any

anyString()?匹配任何 String 參數(shù),anyInt()?匹配任何 int 參數(shù),anySet()?匹配任何 Set,any()?則意味著參數(shù)為任意值?any(User.class)?匹配任何 User類。

when(mockedList.get(anyInt())).thenReturn("element");   
System.out.println(mockedList.get(999));// 此時打印是 element
System.out.println(mockedList.get(777));// 此時打印是 element

?Example:

有如下代碼段:

@Service
public class MyService {
 
    @Autowired
    private MyRepository myRepository;

    @Autowired
    private YourRepository yourRepository;
 
    public void doSomething() {
        this.myRepository.doSomething();
    }
}

測試類:文章來源地址http://www.zghlxwxcb.cn/news/detail-426019.html

@RunWith(MockitoJUnitRunner.class)
@PrepareForTest(MyService.class)
public class UserServiceTest {

    @InjectMocks
    private MyService myService;
 
    @Mock
    private MyRepository myRepository;

    @Mock
    private YourRepository yourRepository;
 
    @Test
    public void testInjectMocks() {
        System.out.println(myService.getMyRepository().getClass());
    }
}

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

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

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

相關(guān)文章

  • springboot使用@Valid 和 @Validated 注解校驗詳解以及編寫一個自定義全局異常類

    springboot使用@Valid 和 @Validated 注解校驗詳解以及編寫一個自定義全局異常類

    全局異常處理類 驗證: ============================================== 導(dǎo)入所需要的包: 如果你是 springboot 項目,那么可以不用引入了,已經(jīng)引入了,他就存在于最核心的 web 開發(fā)包里面。 如果你不是 springboot 項目,那么引入下面依賴即可: 新建三個實體類 實現(xiàn)一: 使用@Valid注解修

    2024年02月10日
    瀏覽(30)
  • 工作中,我們經(jīng)常用到哪些SQL語句呢?

    目錄 一、DDL部分(create、drop、alter) 1.1 create 語句上 1.2 drop 語句 1.3 alter 語句 二、DML(數(shù)據(jù)操縱語言)和DQL(數(shù)據(jù)查詢語言) 2.1 insert 語句 2.2 update 語句 2.3 delete 語句 2.4 select 語句 2.5 其他操縱語言 2.5.1 truncate 語句 2.5.2 merge 語句 三、用戶角色權(quán)限 3.1 用戶相關(guān) 3.1.1 創(chuàng)建用戶

    2024年02月03日
    瀏覽(22)
  • Java單元測試之Mock指定方法

    單元測試時,假如你遇到某個內(nèi)部方法無法正常調(diào)用;我們可以使用mock工具去解決,方法如下:

    2024年02月13日
    瀏覽(18)
  • Java的單元測試Testng和mock

    目錄 單元測試重要性 TestNG TestNG官網(wǎng)介紹 TestNG教程 TestNG注解:?

    2024年02月07日
    瀏覽(20)
  • 在Java微服務(wù)項目中,如何使用Mock來進行單元測試?

    在Java微服務(wù)項目中,如何使用Mock來進行單元測試?

    摘要: 在系統(tǒng)開發(fā)的過程中,單元測試是其中的一個重要環(huán)節(jié)。在Java微服務(wù)項目中,Spring框架本身就為我們提供了一套單元測試的框架SpringBootTest。如果我們在學(xué)校完成課堂作業(yè)或出于興趣愛好自學(xué),是可以使用Spring自帶的單元測試框架進行單測的。 工作中,這種通過Spri

    2024年02月16日
    瀏覽(21)
  • JAVA學(xué)習(xí)-注解.基于注解的單元測試

    ? ? ? ? 基于注解的單元測試是一種使用注解來簡化和增強測試代碼編寫和執(zhí)行的方法。在Java中,有多個基于注解的單元測試框架可供選擇,包括JUnit、TestNG等。下面將對幾個常見的基于注解的單元測試框架進行概述,并介紹它們的特點、使用方法以及與其他框架的比較。

    2024年04月28日
    瀏覽(20)
  • Java注解、文件IO以及匿名函數(shù)

    注解可以在類、方法、構(gòu)造器、成員變量、參數(shù)等地方進行使用,其作用是讓其他程序根據(jù)注解的信息來決定怎么執(zhí)行程序。 自定義注解的形式如下: 特殊屬性名:value 。 如果注解中只有一個 value 屬性,那么使用注解時, value 名稱可以不寫。 創(chuàng)建一個 Mytest1 的注解,注解

    2024年02月10日
    瀏覽(29)
  • Linux驅(qū)動開發(fā)筆記(三):基于ubuntu的helloworld驅(qū)動源碼編寫、makefile編寫以及驅(qū)動編譯加載流程測試

    Linux驅(qū)動開發(fā)筆記(三):基于ubuntu的helloworld驅(qū)動源碼編寫、makefile編寫以及驅(qū)動編譯加載流程測試

    若該文為原創(chuàng)文章,轉(zhuǎn)載請注明原文出處 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/130542981 紅胖子網(wǎng)絡(luò)科技博文大全:開發(fā)技術(shù)集合(包含Qt實用技術(shù)、樹莓派、三維、OpenCV、OpenGL、ffmpeg、OSG、單片機、軟硬結(jié)合等等)持續(xù)更新中… 上一篇:《Linux驅(qū)動開發(fā)筆記(二

    2024年02月05日
    瀏覽(30)
  • 【JAVA】單元測試、反射、注解、動態(tài)代理

    @Test 測試方法 @Before 用來修飾實例方法,該方法會在每一個測試方法執(zhí)行之前執(zhí)行一次。 @After 用來修飾實例方法,該方法會在每一個測試方法執(zhí)行之后執(zhí)行一次。 @Before Class 用來靜態(tài)修飾方法,該方法會在所有測試方法之前只執(zhí)行一次。 @After Class 用來靜態(tài)修飾方法,該方法

    2024年02月11日
    瀏覽(20)
  • Java高級技術(shù):單元測試、反射、注解

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

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

    2024年01月16日
    瀏覽(21)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包