Java 如何 Mock FileInputStream

这篇具有很好参考价值的文章主要介绍了Java 如何 Mock FileInputStream。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:

        最近在写 UT(单元测试) 的过程中,遇到需要 Mock 出 FileInputStream 的情况,在这里分享一下自己的解决方案。

  1. 需要 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. 测试类如下:
    @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);
    
        }
    
    }

   注意:

        在单元测试中我使用了 @PrepareForTest(Class1.class),而没有使用 @PrepareForTest(FileInputStream.class)

        3. 如果需要实际读取一个文件时,例如要读取 resources 目录下的某个文件,可以将代码修改为如下所示:

@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:补充一下自己的pom依赖文章来源地址https://www.toymoban.com/news/detail-431830.html

<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 如何 Mock FileInputStream的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java的单元测试Testng和mock

    目录 单元测试重要性 TestNG TestNG官网介绍 TestNG教程 TestNG注解: 

    2024年02月07日
    浏览(38)
  • Spring Boot集成单元测试之如何mock

    前言 我们在购买电脑的时候,一次就可以开机了,这是因为在出厂的时候厂家就帮我们做好了测试。那如果没有厂家这步,我们会面临显示器无法显示的问题,磁盘无法挂载等情况。那运气好可能一次就能定位,运气不好,还需要排查显示器,内存条,主板,显卡等一系列组

    2024年04月12日
    浏览(32)
  • Java用正确的姿势写单元测试以及mock

    对于一些简单的功能或业务,我们也许可以通过前端调试、postman等接口工具、main函数调用进行测试。但这每次改动代码都要人力测试,耗费大量的人力资源且不高效,真正的项目中单元测试是必不可少的。 单元测试的三步走: 1、组装方法入参 2、执行方法 3、对方法的执行

    2024年02月13日
    浏览(36)
  • 单元测试与Mock

    作者:一笑钦陈 邮箱:xianqin_chen@163.com 你好,我是一笑钦陈,《零零后程序员成长之路》作者,一线互联网 Java 工程师。很高兴你阅读我的博客,让我们共同成长进步! 提醒:在接下来您对本博客的阅读中,如果遇到一些内容、图稿、代码等中的勘误都可以通过邮件进行反

    2024年02月08日
    浏览(57)
  • Testify Mock 单元测试

    Testify 提供了单测方便的断言能力,这里的断言是将对代码实际返回的断言,代码的实际输出和预期是否一致。下面是 gin-gonic/gin 代码库的单测代码,Testify 还提供了很多其他的方法: 单元测试中也会存在不稳定的代码,我们的入参虽然保持不变,但每次单测的结果可能会发

    2024年02月03日
    浏览(57)
  • 单元测试junit+mock

    单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。至于“单元”的大小或范围,并没有一个明确的标准,“单元”可以是一个方法、类、功能模块或者子系统。 单元测试通常和白盒测试联系到一起 ,如果单从概念上来讲两者是有区别的,不过我们通

    2024年02月08日
    浏览(66)
  • mock写单元测试和查数据库的单元测试

    一:mock方式 在测试类上添加注解 将需要测试的类bean添加进来,该类中的其他bean也添加进来 给被测试类中用到的参数、返回值类创建对象 创建BeforeEach和AfterEach方法,在BeforeEach方法中给参数,返回值设置值 然后在test方法中设置被测试的方法 二:可以检测dao层sql的单元测试

    2024年02月15日
    浏览(55)
  • Go 单元测试之mock接口测试

    目录 一、gomock 工具介绍 二、安装 三、使用 3.1 指定三个参数 3.2 使用命令为接口生成 mock 实现 3.3 使用make 命令封装处理mock 四、接口单元测试步骤 三、小黄书Service层单元测试 四、flags 五、打桩(stub) 参数 六、总结 6.1 测试用例定义 6.2 设计测试用例 6.3 执行测试用例代码

    2024年04月22日
    浏览(35)
  • Go语言测试——【单元测试 | Mock测试 | 基准测试】

    作者 :非妃是公主 专栏 :《Golang》 博客主页 :https://blog.csdn.net/myf_666 个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩 软件测试 :软件测试(英语:Software Testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测

    2024年02月10日
    浏览(56)
  • CompletableFuture的单元测试Mock

    在spring项目,假设我们有一个方法 我们对这个方法单元测试,大概率就直接写成: 这样会导致Completable的线程不运行,一直阻塞在红色箭头指示的地方: 等待线程执行完毕。然而线程并没有执行。 此时需要模拟并驱动异步线程的执行,因此需要这样写: 这样就mock了对Runn

    2024年02月09日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包