java:JUnit单元测试

背景

一般软件测试分为白盒测试和黑盒测试

  • 黑盒测试:就是现在一般测试人员的工作点点点,只要功能正常就行
  • 白盒测试:需要关注代码的具体执行过程,是需要写代码的

JUnit 框架是进行白盒测试使用的。

不使用单元测试框架

没有单元测试框架的时候我们是这样写测试用例的:
src/cn.mycompany/myCalculator/Calculator.java

package cn.mycompany.myCalculator;/*** 计算器类*/
public class Calculator {/*** 加法* @param a* @param b* @return*/public int add (int a , int b){return a + b;}/*** 减法* @param a* @param b* @return*/public int sub (int a , int b){return a - b;}
}

src/cn.mycompany/myCalculator/CalculatorTest.java

package cn.mycompany.myCalculator;public class CalculatorTest {public static void main(String[] args) {// 在同一个package,所以不需要导入Calculator//创建对象Calculator c = new Calculator();//调用/* int result = c.add(1, 2);System.out.println(result);*/int result = c.sub(2, 1);System.out.println(result);}
}

这样有几个缺点:
1、比如这里测试加减,必须写完一个注释掉再写另一个
2、用 println 的方式不是很直观的看到用例是否执行通过
3、需要在main方法中执行,不能单个函数执行

使用单元测试框架JUnit

src/cn.mycompany/test/CalculatorTest.java

package cn.mycompany.test;import cn.mycompany.myCalculator.Calculator;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;public class CalculatorTest {/*** 初始化方法:*  用于资源申请,所有测试方法在执行之前都会先执行该方法*/@Beforepublic void init(){System.out.println("init...");}/*** 释放资源方法:*  在所有测试方法执行完后,都会自动执行该方法*/@Afterpublic void close(){System.out.println("close...");}/*** 测试add方法*/@Testpublic void testAdd(){// System.out.println("我被执行了");//1.创建计算器对象System.out.println("testAdd...");Calculator c  = new Calculator();//2.调用add方法int result = c.add(1, 2);//System.out.println(result);//3.断言  我断言这个结果是3Assert.assertEquals(3,result);}@Testpublic void testSub(){//1.创建计算器对象Calculator c  = new Calculator();int result = c.sub(1, 2);System.out.println("testSub....");Assert.assertEquals(-1,result);}
}

可以直接点击 testAdd 左边的运行执行
在这里插入图片描述
可以看到左下角执行的都是绿色代表成功,如果有红色代表失败

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/53055.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++基础

目录 在Ubuntu 下编写CC简介C环境设置编写一个简单的C程序 C基础C的新特性C的输入输出方式C之命名空间namespaceC面向对象类和对象构造函数与析构函数this 指针 继承重载函数重载运算符重载 多态数据封装数据抽象接口(抽象类) 在Ubuntu 下编写C 在Ubunt…

android studio 实用插件推荐

本文字数::2352字 预计阅读时间:8分钟 背景 现在做安卓开发的同学基本都是用 Android Studio 了吧,它具有强大的开放性,可以让用户根据自己的需求开发或使用一些插件辅助自己搬砖,当然开发插件我们可能还没…

Oracle设置某个表字段递增

当Oracle设置字段递增创建触发器 先建一个序列,打开PLSQL 找到Sequences,右击新建 根据自己的需要填写 然后添加触发器,点新建-程序窗口-空白 --TEST_ID为触发器的名字,TEST是添加触发器的表名 CREATE OR REPLACE TRIGGER &qu…

HCIP-Cloud Service V3.0 真题和机构资料

通过认证验证的能力 具备传统企业应用架构和云原生架构设计上云的能力 建议掌握的知识 对IT相关技术有基本的了解;具备一定的公有云服务基础知识;对云计算、网络、存储、数据库等知识有一定的了解,具备Linux操作系统的基础知识 机构的考试大…

python机器学习(六)决策树(上) 构造树、信息熵的分类和度量、信息增益、CART算法、剪枝

决策树算法 模拟相亲的过程,通过相亲决策图,男的去相亲,会先选择性别为女的,然后依次根据年龄、长相、收入、职业等信息对相亲的另一方有所了解。 通过决策图可以发现,生活中面临各种各样的选择,基于我们的…

汽车维修保养记录查询API:实现车辆健康状况一手掌握

在当今的数字化世界中,汽车维修保养记录的查询和管理变得前所未有地简单和便捷。通过API,我们可以轻松地获取车辆的维修和保养记录,从而实现对手中车辆健康状况的实时掌握。 API(应用程序接口)是进行数据交换和通信的标…

Spring Bean的生命周期

文章目录 Spring Bean的生命周期加载Bean对象创建Bean对象构造对象填充属性初始化实例注册销毁 销毁 Spring Bean的生命周期 Spring Bean的生命周期就是指Bean对象从创建到销毁的过程,大体可以分为:实例化、属性赋值、初始化、使用、销毁。 加载Bean对象…

LNMP及论坛搭建

安装 Nginx 服务 systemctl stop firewalld systemctl disable firewalld setenforce 0 1.安装依赖包 #nginx的配置及运行需要pcre、zlib等软件包的支持,因此需要安装这些软件的开发包,以便提供相应的库和头文件。 yum -y install pcre-devel zlib-devel…

硬件串口通信协议学习(UART、IIC、SPI、CAN)

0.前言 学习资料:江协科技的个人空间-江协科技个人主页-哔哩哔哩视频 通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统通信协议:制定通信的规则,通信双方按照协议规则进行数据收发 全双工:通信…

linuxARM裸机学习笔记(3)----主频和时钟配置实验

引言:本文主要学习当前linux该如何去配置时钟频率,这也是重中之重。 系统时钟来源: 32.768KHz 晶振是 I.MX6U 的 RTC 时钟源, 24MHz 晶振是 I.MX6U 内核 和其它外设的时钟源 1. 7路PLL时钟源【都是从24MHZ的晶振PLL而来…

Flink Windows(窗口)详解

Windows(窗口) Windows是流计算的核心。Windows将流分成有限大小的“buckets”,我们可以在其上应用聚合计算(ProcessWindowFunction,ReduceFunction,AggregateFunction或FoldFunction)等。在Fl…

自然语言处理学习笔记(一)————概论

目录 1.自然语言处理概念 2.自然语言与编程语言的比较 (1)词汇量: (2)结构化: (3)歧义性: (4)容错性: (5&#xff0…