Java——Junit单元测试无法使用scanner输入和I/O流的解决方案

                 Java——Junit单元测试无法使用scanner输入和I/O流的解决方案

 

目标:

  • A. 什么是单元测试?
  • B. junit是什么?
  • C. 如何写单元测试?
  • D. 单元测试中使用scanner输入和I/O流无反应如何解决?

 

参考文章

 

1. 什么是单元测试?

        单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。简单的说,单元测试就是对你程序中最小的功能模块进行测试,在c/c++语言里可能是一个函数,java中可能是一个方法或者类。 

        单元测试是编写测试代码,用以检测特定的、明确的、细颗粒的功能!  严格来说,单元测试只针对功能点进行测试,不包括对业务流程正确性的测试。简单的说,单元测试目的:提高代码的质量。哪家公司都不敢把有问题的代码打包部署上线。现在一般公司都会进行业务流程的测试,这也要求测试人员需要了解需求【产品、算法、后端、前端与测试都要对齐】! 

 

2. junit是什么?

        目前开发所用的单元是Junit框架,在大多数java的开发环境中已经集成,可以方便开发自己调用!那么junit到底是什么?

        JUnit是一个Java语言的单元测试框架,由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。 换句话说,junit就是别人写好的单元测试框架,使用此框架可以大大缩短你的测试时间和准确度。

 

3. 如何写单元测试?

  • 首先在pom.xml中添加依赖
  • 添加功能类函数
  • 添加测试类函数

这里以Java的简单单元测试例子作实验,展示一下结果。

 

4. 单元测试中使用scanner输入和I/O流无反应如何解决?

         一般情况,单元测试都是将测试数据直接定义在测试类中。但是,有时候想偷懒或者循环多次测试,怎么办?使用scanner输入和I/O流。尝试过的朋友相信都知道,单元测试中使用scanner输入和I/O流是没有任何反应的。不是你写得代码有问题哈,不要怀疑自己。网上这方面有很多解决方案,个人觉得最偷懒的方法:

  • A. 通过IDEA工具Help-Edit Custom VM Options打开配置文件位置
  • B. 修改配置文件idea64.exe.vmoptions,在最后一行添加:-Deditable.java.test.console=true
  • C. 重启IDEA【必须重启哈】

实在不懂,参考IDEA的junit单元测试Scanner输入无效

 

重启IDEA后,单元测试的效果如下:

 

说明:

  • 【'while' statement cannot complete without throwing an exception 】的解决方案为:强迫症患者可以在线程的执行方法上加入注解@SuppressWarnings("InfiniteLoopStatement")

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页