当前位置: 首页 > wzjs >正文

html小清新类型网站室内设计网站都有哪些平台

html小清新类型网站,室内设计网站都有哪些平台,游戏网页设计素材,免费室内设计软件有哪些目录 一、问题描述二、场景还原1. 测试类 三、原因分析四、解决方案1. 修改idea配置文件2. 使用main方法3. 模拟控制台输入 五、参考文献 一、问题描述 在微服务项目中写了一些自动构建脚本,其中一个实现了自动在设定的模块名下创建数据库表实体类和mapper&#xf…

目录

  • 一、问题描述
  • 二、场景还原
    • 1. 测试类
  • 三、原因分析
  • 四、解决方案
    • 1. 修改idea配置文件
    • 2. 使用main方法
    • 3. 模拟控制台输入
  • 五、参考文献

一、问题描述

在微服务项目中写了一些自动构建脚本,其中一个实现了自动在设定的模块名下创建数据库表实体类和mapper,经过测试已经成功了,为了保险起见,在执行创建前加了一个打印文件路径,确认无误后回车继续运行,然后就卡在了这一步。
> 错误
控制台无法输入任何文字,打上断点debug确认是卡在了等待输入的那一步


二、场景还原

1. 测试类

public class CodeGeneratorTest {@Testvoid test5() {Scanner scanner = new Scanner(System.in);System.out.println("子模块目录:" + "");System.out.println("请确认以上目录正确,按回车键继续...");// 读取一个字符串直到用户按下回车键String input = scanner.nextLine();if (input.isEmpty()) {// 用户按了回车键,继续执行测试System.out.println("继续执行测试...");// 在这里继续执行你的测试逻辑} else {System.out.println("输入了额外内容,测试终止");}// 关闭scanner资源scanner.close();}
}

三、原因分析

恰巧在此之前,已经有运行成功的了,因为那个脚本比较简单,直接在类中通过main方法中运行了,简化如下:

public class Builder {public static void main(String[] args) {// 获取当前项目根目录String projectRoot = System.getProperty("user.dir");Scanner scanner = new Scanner(System.in);System.out.println("项目根目录:" + projectRoot);System.out.println("请确认以上目录正确,按回车键继续...");// 读取一个字符串直到用户按下回车键String line = scanner.nextLine();// 关闭scanner资源scanner.close();}
}

简单对比了一下就想到了是运行环境不同,@Test是在Junit测试环境中,搜索问题可以从两个角度:

  • @test时获取不到scanner.nextLine()
  • junit测试如何获取控制台输入
    都找到了许多解决方法,核心的原因就是单元测试从设计的角度讲是自动化的,不应该依赖人工交互,是一个规范问题,idea默认是关闭的,而以前的eclipse是默认开启的
    参考《阿里巴巴Java开发手册》中单元测试章节的内容:

【强制】单元测试应该是全自动执行的,并且非交互式的。测试用例通常是被定期执行的,执行过程必须完全自动化才有意义。输出结果需要人工检查的测试不是一个好的单元测试。单元测试中不准使用System.out来进行人肉验证,必须使用assert来验证。
【强制】保持单元测试的独立性。为了保证单元测试稳定可靠且便于维护,单元测试用例之间决不能互相调用,也不能依赖执行的先后次序。
反例:method2需要依赖method1的执行,将执行结果作为method2的输入。
【强制】单元测试是可以重复执行的,不能受到外界环境的影响。
说明:单元测试通常会被放到持续集成中,每次有代码check in时单元测试都会被执行。如果单测对外部环境(网络、服务、中间件等)有依赖,容易导致持续集成机制的不可用。
正例:为了不受外界环境影响,要求设计代码时就把SUT的依赖改成注入,在测试时用spring 这样的DI框架注入一个本地(内存)实现或者Mock实现。


四、解决方案

1. 修改idea配置文件

比较简单便捷的方法是修改idea配置文件,取消这一限制
在idea最上方的菜单栏,点击hepl -> Edit Custom Vm Options
在这里插入图片描述
就会打开idea64.exe.vmoptions配置文件,我这里因为总是打开的类太多就取消后缀名的显示了,在最后一行加上参数:

-Deditable.java.test.console=true

意思就是Java的
在这里插入图片描述
你也可以找到idea的安装目录,打开bin目录,找到idea64.exe.vmoptions文件进行修改也可以,但是要根据idea位数选择对应的文件
在这里插入图片描述
然后重启idea,否则配置不会生效
再测试一下,可以接收控制台内容了
在这里插入图片描述
不过可能对一些版本不生效,我的版本是2019.3.4
在这里插入图片描述

2. 使用main方法

通过配置文件修改是一劳永逸的,但是有可能失败,如果其他人测试也得修改配置,根据原因分析里提到的,也可以直接用main方法执行,但这样就不是单元测试了,只能用于脚本执行

public class CodeGeneratorTest {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("子模块目录:" + "");System.out.println("请确认以上目录正确,按回车键继续...");// 读取一个字符串直到用户按下回车键String input = scanner.nextLine();// 关闭scanner资源scanner.close();}
}

3. 模拟控制台输入

如果既想测试又不想违背人工干预,只是测试交互该怎么做呢,可以通过模拟控制台输入
利用jdk自带的:System.setIn(InputStream in) 重新分配“标准”输入流,相当于不是从控制台获取数据,而是从该流中获取数据。而对于字符串可以先转为字节数组,然后转成流,ByteArrayInputStream(byte buf[])继承自InputStream,可以作为System.setIn()方法的参数。

public class CodeGeneratorTest {@Testvoid test6() {System.setIn(new ByteArrayInputStream("hello\n".getBytes()));Scanner scanner = new Scanner(System.in);String input = scanner.nextLine();scanner.close();System.out.println(input);}
}

在这里插入图片描述

五、参考文献

关于IDEA的junit单元测试Scanner输入不可用的问题(多种原因分析)
JAVA【idea中的@test使用scanner无法从键盘输入的问题】
Java JUnit测试实现控制台输入的正确姿势
用JUnit测试如何自动从控制台输入数据


喜欢的点个关注吧><!祝你永无bug!

/*_ooOoo_o8888888o88" . "88(| -_- |)O\  =  /O____/`---'\____.'  \\|     |//  `./  \\|||  :  |||//  \/  _||||| -:- |||||-  \|   | \\\  -  /// |   || \_|  ''\---/''  |   |\  .-\__  `-`  ___/-. /___`. .'  /--.--\  `. . __."" '<  `.___\_<|>_/___.'  >'"".| | :  `- \`.;`\ _ /`;.`/ - ` : | |\  \ `-.   \_ __\ /__ _/   .-` /  /
======`-.____`-.___\_____/___.-`____.-'======`=---='
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^佛祖保佑       永无BUG
*/

文章转载自:

http://Li0xAZHT.dhchL.cn
http://Qh9eqdFX.dhchL.cn
http://hDeOCYkb.dhchL.cn
http://I0NlybYr.dhchL.cn
http://vfgtUbr2.dhchL.cn
http://gJv98YYF.dhchL.cn
http://edeNzc0r.dhchL.cn
http://yOv5cf2X.dhchL.cn
http://LoNpUbwE.dhchL.cn
http://NGtUga19.dhchL.cn
http://BAFzd3UX.dhchL.cn
http://zHUjY9Hv.dhchL.cn
http://CylsCwdT.dhchL.cn
http://dHiP8blC.dhchL.cn
http://AnV0o66C.dhchL.cn
http://3utMybBk.dhchL.cn
http://SwyJGdpg.dhchL.cn
http://VqXDY0Pi.dhchL.cn
http://fMuUezNZ.dhchL.cn
http://nOWE0bOc.dhchL.cn
http://OLbaykFg.dhchL.cn
http://w9c20NjE.dhchL.cn
http://xCEomhzD.dhchL.cn
http://g7j0HgIA.dhchL.cn
http://YeYx3E6O.dhchL.cn
http://oOsVSsWQ.dhchL.cn
http://m9f8ozqb.dhchL.cn
http://th1iG2Sp.dhchL.cn
http://HZXmLoQz.dhchL.cn
http://pHfhbtMt.dhchL.cn
http://www.dtcms.com/wzjs/702158.html

相关文章:

  • 好域名做网站石家庄企业网站
  • 怎样做3d动画短视频网站怎样建立一个免费的网站
  • pc软件下载网站瑞幸咖啡网站建设方案
  • 青岛制作网站哪家公司好烟台做网站的价格
  • 如何制作外贸网站青海省建设工程信息网站
  • 门户型网站建设html网页源代码
  • 无锡做家纺公司网站大型网站seo
  • 精通网站建设 100wordpress 文字背景颜色
  • 吉安高端网站建设公司营销策划与运营方案怎么写
  • 成都网站推广如何5188站长平台
  • 自助建站免费网站大兴安岭网站建设
  • 建设网站issseo策略推广什么意思
  • 甘肃省建设厅网站资质升级公示教学网站开发背景及意义
  • 彩票网站建设柏网站域名删除时间查询
  • 模板网站优化网站建设岗位廉政风险防控
  • 旅游景点网站设计论文百度seo排名优化价格
  • 网站右侧固定标题怎么做wordpress更新缓存的插件
  • 东莞谷歌推广公司国外网站seo
  • 广州有专做网站windows优化大师和360哪个好
  • 做网站入门自动添加内部链接的wordpress插件
  • 东莞整站优化排名附近电脑培训班零基础
  • 主体负责人和网站负责人不能是同一个人平时发现同学做的ppt找的材料图片不错_不知道从哪些网站可以获得
  • php网站如何编辑深圳网站设计招聘信息
  • 商务网站规划设计要点网站优化应该怎么做
  • pc网站建设哪个好企业信息公示网查询
  • 富阳做网站方式网站前台做好之后再怎么做
  • 响应式网站建站价格网站如何做会员登录页面
  • 上海大型网站开发公司dede网站地图地睛
  • 温州个人网站建设js网站开发视频
  • 网站建设专用术语产品网络营销策划方案