最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java如何Mock FileInputStream問(wèn)題

 更新時(shí)間:2023年09月21日 14:38:28   作者:JonTang  
這篇文章主要介紹了Java如何Mock FileInputStream問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Java如何Mock FileInputStream

1. 最近在寫UT(單元測(cè)試) 的過(guò)程

遇到需要 Mock 出 FileInputStream 的情況,在這里分享一下自己的解決方案。

需要 Mock 的類:

public class Class1 {
    public Class1() { }
    public boolean method1() {
        try {
            FileInputStream fileInputStream = new FileInputStream("file.txt");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return false;
        }
        return true;
    }
}

2. 測(cè)試類如下

@RunWith(PowerMockRunner.class)
@PrepareForTest(Class1.class)
public class Class1Test {
    @Test
    public void method1Test() throws Exception {
        Class1 class1 = new Class1();
        FileInputStream fileInputStreamMock = mock(FileInputStream.class);
        whenNew(FileInputStream.class).withAnyArguments().thenReturn(fileInputStreamMock);
        boolean expected = true;
        boolean actual = class1.method1();
        assertEquals(expected, actual);
    }
}

注意:

在單元測(cè)試中我使用了 @PrepareForTest(Class1.class),而沒(méi)有使用 @PrepareForTest(FileInputStream.class)

3. 如果需要實(shí)際讀取一個(gè)文件時(shí)

例如要讀取 resources 目錄下的某個(gè)文件,可以將代碼修改為如下所示:

@RunWith(PowerMockRunner.class)
@PrepareForTest(Class1.class)
public class Class1Test {
    @Test
    public void method1Test() throws Exception {
        Class1 class1 = new Class1();
        String path = new File(getClass().getClassLoader().getResource("file.txt").getFile()).getCanonicalPath();
        FileInputStream fileInputStream = new FileInputStream(path);
        whenNew(FileInputStream.class).withAnyArguments().thenReturn(fileInputStreamMock);
        boolean expected = true;
        boolean actual = class1.method1();
        assertEquals(expected, actual);
    }
}

PS:補(bǔ)充一下自己的pom依賴

<dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-module-junit4</artifactId>
        <version>1.7.4</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-api-mockito</artifactId>
        <version>1.7.4</version>
        <scope>test</scope>
    </dependency>
</dependencies>

Java mockito mock InputStream

方案

使用apache commons的IOUtils直接構(gòu)造一個(gè)基于String的InputStream,一些文本傳輸相關(guān)的測(cè)試的場(chǎng)景里非常實(shí)用。

Process mockProcess = mock(Process.class);
InputStream errorStream = org.apache.commons.io.IOUtils.toInputStream("error message", "UTF-8");
when(mockProcess.getErrorStream()).thenReturn(errorStream);

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • springboot注冊(cè)攔截器所遇到的問(wèn)題

    springboot注冊(cè)攔截器所遇到的問(wèn)題

    這篇文章主要介紹了springboot注冊(cè)攔截器的方法及所遇到的問(wèn)題,需要的朋友可以參考下
    2018-07-07
  • SpringCloud Stream使用解析

    SpringCloud Stream使用解析

    這篇文章主要介紹了SpringCloud Stream介紹,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • java8中Map的一些騷操作總結(jié)

    java8中Map的一些騷操作總結(jié)

    這篇文章主要給大家介紹了關(guān)于java8中Map的一些騷操作,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • SpringBoot中@RestControllerAdvice注解實(shí)現(xiàn)全局異常處理類

    SpringBoot中@RestControllerAdvice注解實(shí)現(xiàn)全局異常處理類

    這篇文章主要介紹了SpringBoot中@RestControllerAdvice注解全局異常處理類,springboot中使用@RestControllerAdvice注解,完成優(yōu)雅的全局異常處理類,可以針對(duì)所有異常類型先進(jìn)行通用處理后再對(duì)特定異常類型進(jìn)行不同的處理操作,需要的朋友可以參考下
    2024-01-01
  • Springboot中設(shè)置時(shí)間格式問(wèn)題小結(jié)

    Springboot中設(shè)置時(shí)間格式問(wèn)題小結(jié)

    本文主要介紹了Springboot中設(shè)置時(shí)間格式問(wèn)題小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04
  • Java單例模式實(shí)現(xiàn)靜態(tài)內(nèi)部類方法示例

    Java單例模式實(shí)現(xiàn)靜態(tài)內(nèi)部類方法示例

    這篇文章主要介紹了Java單例模式實(shí)現(xiàn)靜態(tài)內(nèi)部類方法示例,涉及構(gòu)造函數(shù)私有化等相關(guān)內(nèi)容,需要的朋友可以了解下。
    2017-09-09
  • Java中的棧概述及JVM 中的棧結(jié)構(gòu)

    Java中的棧概述及JVM 中的棧結(jié)構(gòu)

    棧是一種受限的線性數(shù)據(jù)結(jié)構(gòu),只能在一端(稱為 棧頂(Top))進(jìn)行插入和刪除操作,本文給大家介紹Java中的棧概述深入理解JVM中的棧結(jié)構(gòu),感興趣的朋友跟隨小編一起看看吧
    2025-10-10
  • SpringBoot集成SpringSecurity和JWT做登陸鑒權(quán)的實(shí)現(xiàn)

    SpringBoot集成SpringSecurity和JWT做登陸鑒權(quán)的實(shí)現(xiàn)

    這篇文章主要介紹了SpringBoot集成SpringSecurity和JWT做登陸鑒權(quán)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • struts2過(guò)濾器和攔截器的區(qū)別分析

    struts2過(guò)濾器和攔截器的區(qū)別分析

    這篇文章主要介紹了struts2過(guò)濾器和攔截器的區(qū)別,簡(jiǎn)單分析了struts2框架中過(guò)濾器和攔截器的概念與相關(guān)使用區(qū)別,需要的朋友可以參考下
    2016-04-04
  • Java之Arrays的各種功能和用法總結(jié)

    Java之Arrays的各種功能和用法總結(jié)

    數(shù)組在?Java?中是一種常用的數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)和操作大量數(shù)據(jù)。Arrays?是我們?cè)谔幚頂?shù)組時(shí)的一把利器。它提供了豐富的方法和功能,使得數(shù)組操作變得更加簡(jiǎn)單、高效和可靠。接下來(lái)我們一起看看?Arrays?的各種功能和用法,,需要的朋友可以參考下
    2023-05-05

最新評(píng)論

黔东| 福建省| 漳州市| 泗洪县| 堆龙德庆县| 安平县| 兰西县| 辽源市| 星座| 磴口县| 万全县| 永济市| 铜山县| 平潭县| 南投县| 巴里| 搜索| 绵竹市| 崇左市| 桃源县| 兴隆县| 茂名市| 来凤县| 泽普县| 泰宁县| 高台县| 宁化县| 华坪县| 黄骅市| 建德市| 冷水江市| 桦川县| 巴塘县| 仪征市| 洛宁县| 改则县| 五峰| 隆化县| 桐城市| 赣州市| 苍溪县|