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

Java JUnit单元测试

Java JUnit 单元测试

测试分类

  • 黑盒测试

    不需要写代码,给输入值,看程序是否能够输出期望的值

  • 白盒测试

    需要写代码,关注程序具体的执行流程

Junit单元测试

JUnit 是由 Erich Gamma 和 Kent Beck 编写的一个测试框架(regression testing framework),供Java开发人员编写单元测试之用。

JUnit是程序员测试,是白盒测试。

在一个Java程序中,往往有若干个方法,需要保证每一个方法都是正确的,但单一进行测试只能在main方法中进行,于是可以使用JUnit测试,对每一个分别单一进行测试,保证程序的正常运行。

需要导入的jar包(导入步骤略)

  • juni-4.21.jar
  • hamcrest-core-1.3.jar

也可以直接使用@Test,系统报错,在联网的情况下可以使用IDEA进行下载(Alt+Enter)

使用方法

import org.junit.Test;
public class JUnitTest {@Testpublic void test1(){System.out.println("hello");}@Testpublic void test2(){System.out.println("hello2");  }
}
//Test是导入包中的注解

限制条件

  • 所在的类必须是public的,非abstract的,包含唯一的无参构造器(不写自动声明)

  • @Test标记的方法本身必须是public、非抽象的、非静态的、void返回值,()无参数的

    若存在返回值、参数,但使用@Test进行测试,没有办法进行传参,则无法使用

Scanner问题

默认条件下,单元测试方法中,使用Scanner输入失效

@Test
public void test(){Scanner scan = new Scanner(System.in);System.out.println("请输入一个数值:");int num = scan.nextInt();System.out.println(num);
}
//程序会运行,但无法输入数值

解决方案

idea64.exe.vmoptions配置文件中加入下面一行设置,重启idea后生效。

路径Help ——> Edit Custom VM Options文件中添加

-Deditable.java.test.console=true

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Spring MVC/Web
  • 人才测评的应用:人才选拔,岗位晋升,面试招聘测评
  • 开源网页视频会议,WebRTC音视频功能比较
  • kafka 消费模式基础架构
  • Flutter 中的 ExpansionTile 小部件:全面指南
  • BWVS 靶场测试
  • CSS布局和定位应用方案
  • 网络编程-TCP并发服务器-多点通信-域套接字
  • 重学java 39.多线程 — 线程安全
  • 一篇文章讲透排序算法之希尔排序
  • 大摩:AI PC渗透率到2028年将达65%,联想和戴尔是最大受益者
  • 【linux】docker下nextcloud安装人脸识别插件
  • 碌时刻必备!微信自动回复让你告别消息堆积
  • 临时存储和永久存储的区别
  • HarmonyOS 鸿蒙应用开发 - 多态样式 stateStyles
  • [数据结构]链表的实现在PHP中
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • Android 控件背景颜色处理
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • Cumulo 的 ClojureScript 模块已经成型
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • HTML5新特性总结
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • java 多线程基础, 我觉得还是有必要看看的
  • Laravel 实践之路: 数据库迁移与数据填充
  • PAT A1120
  • PHP那些事儿
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • python_bomb----数据类型总结
  • Python连接Oracle
  • spring-boot List转Page
  • sublime配置文件
  • Transformer-XL: Unleashing the Potential of Attention Models
  • 高程读书笔记 第六章 面向对象程序设计
  • 基于游标的分页接口实现
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 如何学习JavaEE,项目又该如何做?
  • 项目实战-Api的解决方案
  • 携程小程序初体验
  • 白色的风信子
  • AI算硅基生命吗,为什么?
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​埃文科技受邀出席2024 “数据要素×”生态大会​
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • #includecmath
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (LLM) 很笨
  • (pytorch进阶之路)扩散概率模型
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)甲方乙方——赵民谈找工作
  • (转)平衡树