详解Java单元测试之Junit框架使用教程
作者:遇安.112 发布时间:2022-03-06 02:55:56
单元测试
单元测试就是针对最小的功能单元编写测试代码,Java程序最小的功能单元是方法,因此,单元测试就是针对Java方法的测试,进而检查方法的正确性
目前测试方法是怎么进行的,存在什么问题?
1、只有一个main方法,如果一个方法的测试失败了,其他方法测试会受到影响
2、无法得到测试的结果报告,需要程序员自己去观察测试是否成功
3、无法实现自动化测试
Junit单元测试框架
1、Junit是使用Java语言实现的单元测试框架,它是开源的,Java开发者都应当学习并使用Junit编写单元测试
2、此外,几乎所有的IDE工具都集成了Junit,这样我们就可以直接在IDE中编写并运行Junit测试,Junit目前最新版本是5
Junit优点
1、Junit可以灵活的选择执行哪些测试方法,可以一键执行全部测试方法
2、Junit可以生成全部方法的测试报告
3、Junit可以生成测试报告,如果测试良好则是绿色,如果测试失败则是红色
4、单元测试中的某个方法测试失败了,不会影响其他测试方法的测试
Junit单元测试是做什么的?
测试类中的方法的正确性的
单元测试快速入门
需求:使用单元测试进行业务方法预期结果、正确性测试的快速入门
分析:
1、将Junit的jar包导入到项目中
IDEA通常整合好了Junit框架,一般不需要导入
如果IDEA没有整合好,需要自己手工导入两个Junit的jar包到模块
2、编写测试方法:该测试方法必须是公共的无参数无返回值的非静态方法
3、在测试方法上使用@Test注解:标注该方法是一个测试方法
4、在测试方法中完成被测试方法的预期正确性测试
5、选中测试方法,选择Junit运行,如果测试良好则是绿色,如果测试失败,则是红色
业务类
//业务方法
public class 单元测试_Junit框架 {
public String loginName(String loginName,String passWord){
if("YAn".equals(loginName)&&"123456".equals(passWord)){
return "登录成功";
}else{
return "登录失败,密码或者用户名错误";
}
}
public void selectName(){
//这里我们故意写一个bug,方便测试
System.out.println(10/0);
System.out.println("查询成功!");
}
}
测试方法
import org.junit.Assert;
import org.junit.Test;
//测试方法
public class 单元测试_Junit框架text {
/*
测试方法注意点:
1、必须是公开的、无参、无返回值的方法
2、测试方法必须使用@Test注解标记
*/
@Test
public void test(){
单元测试_Junit框架 t=new 单元测试_Junit框架();
String ts=t.loginName("YAn","123456");
//进行预期结果的正确性测试:断言
Assert.assertEquals("您的业务功能可能出现了问题","登录成功",ts);
}
@Test
public void selectName(){
单元测试_Junit框架 ts=new 单元测试_Junit框架();
ts.selectName();
}
}
两个测试方法运行后结果:
如果您的项目被人动了,和你的预期结果不一样,则是这样的:
单元测试常用注解(博主这里用的是版本4):
业务类修改一点点,让测试方法都没有bug
//业务方法
public class 单元测试_Junit框架 {
public String loginName(String loginName,String passWord){
if("YAn".equals(loginName)&&"123456".equals(passWord)){
return "登录成功";
}else{
return "登录失败,密码或者用户名错误";
}
}
public void selectName(){
System.out.println(10/2);
System.out.println("查询成功!");
}
}
测试方法
import org.junit.*;
//测试方法
public class 单元测试_Junit框架text {
//修饰实例方法的
@Before
public void Before(){
System.out.println("Before方法运行");
}
@After
public void After(){
System.out.println("After方法运行");
}
//修饰静态方法的
@BeforeClass
public static void BeforeClass(){
System.out.println("BeforeClass方法运行");
}
@AfterClass
public static void AfterClass(){
System.out.println("AfterClass方法运行");
}
/*
测试方法注意点:
1、必须是公开的、无参、无返回值的方法
2、测试方法必须使用@Test注解标记
*/
@Test
public void test(){
单元测试_Junit框架 t=new 单元测试_Junit框架();
String ts=t.loginName("YAn","123456");
//进行预期结果的正确性测试:断言
Assert.assertEquals("您的业务功能可能出现了问题","登录成功",ts);
}
@Test
public void selectName(){
单元测试_Junit框架 ts=new 单元测试_Junit框架();
ts.selectName();
}
}
运行结果:
可以看出最先运行的是BeforeClass测试方法,最后结束的是AfterClass测试方法。
先执行Before方法,然后运行里面的测试内容,再运行After方法。
开始执行的方法:初始化资源
执行完之后的方法:释放资源
来源:https://blog.csdn.net/qq_62731133/article/details/124973214
猜你喜欢
- 前言Java中共有八种基本数据类型:byte,int,short,long,float,double,char,boolean。计算机中的基
- 本节了解一下 SpringBoot 中 Web 开发的静态资源导入和首页设置,对应 SpringBoot-03-Web 项目。1. 静态资源
- java.nio.file.Files.walkFileTree是JDK7新增的静态工具方法。1.Files.walkFileTree的原理
- 树形结构很多地方都有应用,比如我们在构造网站后台的授权限树的时候,再比如我们在设计多级留言的时候、还有分类等等。有些时候我们的树形结构并不需
- 本文实例为大家分享了C语言非递归后序遍历二叉树的具体代码,供大家参考,具体内容如下法一:实现思路:一个栈 先按 根->右子树->
- Spring Security中的内置过滤器顺序是怎么维护的?我想很多开发者都对这个问题感兴趣。本篇我和大家一起探讨下这个问题。HttpSe
- 本文是Spring Security系列中的一篇。在上一篇文章中,我们通过实现UserDetailsService和UserDetails接
- 前言本文主要写的是:springboot下ueditor上传功能的实现及遇到的一些问题的处理整体项目结构展示Springboot整合uedi
- 一. 线性表中的顺序表线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见
- 一、导入JAR包二、配置applicationContext.xml的spring核心配置三、 public static void mai
- 本文实例为大家分享了Android自定义加载圈动画展示的具体代码,供大家参考,具体内容如下实现如下效果: 该效果图主要有3个动画: 1.旋转
- 一、项目运行环境配置:Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe
- protobuf对象不能直接使用jsonlib去转,因为protobuf生成的对象的get方法返回的类型有byte[],而只有String类
- 给对象按照字符串属性进行排序在java中对象进行排序,排序的属性是string,我们只需要实现Comparator接口,然后实现比较的方式。
- 在C/C++跨平台开发中,我们知道在Windows上可以通过VS,进行单步断点调试,这非常方便。但是我们如果编译好的动态库so,想要跟踪下其
- 详细描述maven中央仓库发布jar包的中间过程, 以及遇到的一些问题汇总, 尽量用文字描述清楚, 耐心看下去, 就一定会发布成功----S
- 前言java8借鉴了第三方日期库joda很多的优点java.time包类名描述Instant时间戳Duration持续时间,时间差Local
- 1、java代码/** 获取客户端IP */ public static final String getClientIp(Ht
- 今天从网上找了个例子实现了语音识别,个人感觉挺好玩的,就把代码贴出来与大家分享下: &nbs
- 1.背景 SpringBoot项目中,之前都是在controller方法的第一行手动打印 log,return之前再