Java单元测试工具:JUnit4(一)——概述及简单例子「建议收藏」

Java单元测试工具:JUnit4(一)——概述及简单例子「建议收藏」1.概述1.1什么是JUnit①JUnit是用于编写可复用测试集的简单框架,是xUnit的一个子集。xUnit是一套基于测试驱动开发的测试框架,有PythonUnit、CppUnit、JUnit等。②Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。③多数Java的开发环境都已经集成了JUnit作为单元测试的工具,比如Eclipse。

大家好,又见面了,我是你们的朋友全栈君。

(一)JUnit概述及一个简单例子

        看了慕课网的JUnit视频教程:
http://www.imooc.com/learn/356,总结笔记。

        这篇笔记记录JUnit的概述,以及一个快速入门的例子。

1.概述

1.1 什么是JUnit

        ①JUnit是用于编写可复用测试集的简单框架,是xUnit的一个子集。xUnit是一套基于测试驱动开发的测试框架,有PythonUnit、CppUnit、JUnit等。

        ②Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。

        ③多数Java的开发环境都已经集成了JUnit作为单元测试的工具,比如Eclipse。

1.2 为什么要使用测试工具

        ①测试框架可以帮助我们对编写的程序进行有目的地测试,帮助我们最大限度地避免代码中的bug,以保证系统的正确性和稳定性。
        ②很多人对自己写的代码,测试时就简单写main,然后sysout输出控制台观察结果。这样非常枯燥繁琐,不规范。缺点:测试方法不能一起运行,测试结果要程序猿自己观察才可以判断程序逻辑是否正确。
        ③JUnit的断言机制,可以直接将我们的预期结果和程序运行的结果进行一个比对,确保对结果的可预知性。

1.3 相关链接

JUnit官网:
http://junit.org/

2.简单例子快速入门

2.1 创建简单业务类

        使用Eclipse创建一个项目,导入JUnit相关包,因为eclipse集成了JUnit框架,所以可以直接右键项目,选择Build Path → 点击Add Libraries → 选择JUnit  → 点击Next,选择JUnit版本,然后Finish。(其实也可以下载jar包作为用户库来添加)
        编写一个简单的计算类:Calcuate类
package jtzen9.util;
/**
 * 实现加减乘除的简单计算类
 * @author Zen9
 *
 */
public class Calcuate {
	public int add(int a,int b){
		return a+b;
	}
	public int subtract(int a,int b){
		return a-b;
	}
	public int multiply(int a,int b){
		return a*b;
	}
	public int divide(int a,int b){
		return a/b;
	}
}

2.2 创建测试类

        ①右键Calcuate类,new 一个 JUnit Test Case:
Java单元测试工具:JUnit4(一)——概述及简单例子「建议收藏」


        ②弹出的对话框,暂时不做修改,直接点击next:(这样创建的测试类会在同一个包下,暂时不管测试类和业务类的隔离)
Java单元测试工具:JUnit4(一)——概述及简单例子「建议收藏」


        ③勾选要测试的方法,点击Finish:
Java单元测试工具:JUnit4(一)——概述及简单例子「建议收藏」




2.3 修改生成的测试类代码

        上面步骤生成的测试类只包含测试方法的模板,并没有具体的测试细节,修改成如下:(其中有比较多的重复代码,暂时不管;并将减法的测试设为有问题)
package jtzen9.util;
import org.junit.Assert;
import org.junit.Test;
public class CalcuateTest {
	Calcuate calcuate;

	@Test
	public void testAdd() {
		calcuate = new Calcuate();
		int result = calcuate.add(2, 3);
		Assert.assertEquals("加法有问题", 5, result);
		/*
		 * "加法有问题":期望值和实际值不一致时,显示的信息
		 * 5 :期望值
		 * result :实际值
		 */
	}

	@Test
	public void testSubtract() {
		calcuate = new Calcuate();
		int result = calcuate.subtract(12, 2); 
		Assert.assertEquals("减法有问题", 10000, result); //故意设置减法期望值为10000
	}

	@Test
	public void testMultiply() {
		calcuate = new Calcuate();
		int result = calcuate.multiply(2, 3);
		Assert.assertEquals("乘法有问题", 6, result);
	}

	@Test
	public void testDivide() {
		calcuate = new Calcuate();
		int result = calcuate.divide(6, 3);
		Assert.assertEquals("除法有问题", 2, result);
	}
}

2.4 运行结果

        右键测试类,选择Run As , JUnit Test,结果如下:

Java单元测试工具:JUnit4(一)——概述及简单例子「建议收藏」

        总共有4个测试方法,运行了4个方法;其中failures有1个,即有一个方法的输出结果跟我们的预期不一样。




版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/156941.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • ingress什么意思_k8s kong

    ingress什么意思_k8s kongk8sIngress介绍Http代理Https代理Ingress介绍我们已经知道,Service对集群之外暴露服务的主要方式有两种:NodePort和LoadBalancer,但是这两种方式,都有一定的缺点:NodePort方式的缺点是会占用很多集群机器的端口,那么当集群服务变多的时候,这个缺点就愈发明显。LoadBalancer的缺点是每个Service都需要一个LB,浪费,麻烦,并且需要kubernetes之外的设备的支持。基于这种现状,kubernetes提供了Ingress资源对象,I

    2022年8月9日
  • windows渗透测试工具_网络渗透工具包

    windows渗透测试工具_网络渗透工具包前言这几天一直有工作,所以就没有来的及去更新靶场还有CTF试题,接下来给大家更新一个优秀的工具:2022年最新Windows10渗透工具包镜像系统简介基于Win10Workstation21H2x64MSDN原版镜像制作;完整安装WSLKaliLinux2022.1,并配置图形化模式;精简系统自带软件,美化字体及部分图标,适度优化;镜像容量74.5G,使用单磁盘文件存储,提升性能;建议运行环境:vmware:16.0运行内存:8G固态硬盘:100G免责声明

    2022年10月20日
  • 手机游戏开发现状分析[通俗易懂]

    手机游戏开发现状分析[通俗易懂]随着近年来手机的日渐普及,手机游戏已经成为整个游戏领域发展速度最快的部分。根据英国某媒体研究公布的统计数据,今年的手机游戏市场的产值已经达到5.87亿美元,比去年年翻了一番。该公司预计到今后几年里这一市场的产值将达到目前的6倍,增至38亿美元。 我国的手机游戏在最近一年,也有了长足的发展。但是就其规模而言,还远远没有达到国外的水平。这其中原因很多,但有一点是可以肯定的,我国的手机游戏前景是光明

    2022年4月30日
  • ubuntu下使用pip卸载包时出现Cannot uninstall scipy

    ubuntu下使用pip卸载包时出现Cannot uninstall scipyubuntu系统下使用pipuninstallscipy命令卸载包时,遇到报错信息为:ERROR:Cannotuninstall‘scipy’.Itisadistutilsinstalledprojectandthuswecannotaccuratelydeterminewhichfilesbelongtoitwhichwouldleadtoonlyapartialuninstall.最终发现通过以下方式可以解决:在/根目录下搜索“scip

    2022年10月17日
  • @RequestBody 和 @RequestParam可以同时使用

    @RequestBody 和 @RequestParam可以同时使用@RequestParam和@RequestBody这两个注解是可以同时使用的。网上有很多博客说@Requestparam和@RequestBody不能同时使用,这是错误的。根据HTTP协议,并没有说post请求不能带URL参数,经验证往一个带有参数的URL发送post请求也是可以成功的。自己个人实际验证结果:packagecom.example.model;import…

    2022年6月16日
  • activity生命周期的七种方法_九分之五大还是九分之四大

    activity生命周期的七种方法_九分之五大还是九分之四大Activity生命周期是指一个Activity从创建到销毁的全过程。下图是Activity的生命周期模型。一、生命周期五种状态(1)启动状态:Activity的启动状态很短暂,当Activity启动后便会进入运行状态。(2)运行状态:Activity在此状态时处于屏幕最前端,它是可见、有焦点的,可以与用户进行交互。如单击、长按等事件。即使出现内存不足的情况,Android…

    2022年8月30日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号