Junit概述和快速入门

news/2024/4/25 0:00:11/

单元测试概述

在程序中,一个单元可以是一个完整的模块,但它通常是一个单独的方法或者程序

在面向对象的编程中,一个单元通常是整个界面,例如类,但可能是单个方法

JUnit是一个java编程语言的单元测试框架

通过先为最小的可测试单元编写测试,然后编写这些单元之间的复合行为,就可以为复杂的应用程序建立全面的测试

单元测试的优点:

自己编写main方法测试存在的问题:

无法得到测试结果的报告,需要程序员自己去观察测试是否成功

如果一个测试方法失败了,其他方法测试会受到影响

无法一键完成全部模块的全部方法的测试

单元测试的优点:

可以生成方法测试报告。如果执行结果为绿色的,那么表面测试通过;如果测试结果是红色的,表面测试不通过

单元测试中,某个方法测试失败了,不影响其他测试方法的测试

可以一键执行全部测试方法

单元测试快速入门

编码约定

类放到test包中

在test包下创建和原包名相同的包

类名用XxxTest结尾

方法用testMethod命名

单元测试快速入门

1.和src同级建立test目录,并修改该目录为Test Sources Root

2.在test目录下建包com.aynu

3.在com.aynu包下新建类:MyMathTest

4.在类中编写第一个测试方法:testAdd(){}

                方法修饰符:public void testAdd(){ }

5.如何让该方法称为Junit中的测试方法呢?

                导入junit-4.12.jar和hamcrest-core-1.3.jar包

                然后再方法上添加@Test注解

6.运行测试方法

7.使用断言改进测试方法的运行

package com.aynu;//自定义数学类,用于对两个数做加减乘除public class MyMath {public int add(int a,int b){return a+b;}public int sub(int a,int b){return a-b;}public int mul(int a,int b){return a*b;}public int div(int a,int b){return a/b;}
}
package com.aynu;import org.junit.Test;public class MyMathTest {@Testpublic void testAdd(){MyMath myMath=new MyMath();int result = myMath.add(10,20);System.out.println(result);}@Testpublic void testsub(){MyMath myMath=new MyMath();int result = myMath.sub(20,10);System.out.println(result);}}


使用断言改进测试方法

Junit测试框架中Assert类就是实现断言的工具,主要作用如下:

单元测试用于判断某个特定条件下某个方法的行为

执行单元测试为了证明某段代码的执行结果和期望的一致

查看两个对象是否相等,类似于字符串比较使用的equals()方法

public static void assertEquals(Object expected(期望值),Object actual(实际值))

public static void assertNotEquals(Object unexpected,Object actual)

package com.aynu;import org.junit.Assert;
import org.junit.Test;public class MyMathTest {//    @Test
//    public void testAdd(){
//        MyMath myMath=new MyMath();
//        int result = myMath.add(10,20);
//        System.out.println(result);
//    }
//    @Test
//    public void testsub(){
//        MyMath myMath=new MyMath();
//        int result = myMath.sub(20,10);
//        System.out.println(result);
//
//    }//    查看两个对象是否相等,类似于字符串比较使用的equals()方法
//    public static void assertEquals(Object expected,Object actual)@Testpublic void testAdd(){MyMath myMath=new MyMath();int result = myMath.add(10,20);//public static void assertEquals(Object expected,Object actual)Assert.assertEquals(30,result);//Assert.assertEquals(20,result);}}

 

 Junit常用注解:

方法名说明
@Test说明依附在JUnit的public void 方法可以作为一个测试案例
@Before修饰实例方法,方法针对每一个测试用例执行,但是是在执行测试用例之前
@After修饰实例方法,方法针对每一个测试用例执行,但是是在执行测试用例之后
@BeforeClass修饰静态方法,方法首先执行,并且只执行一次,用于初始化资源
@AfterClass修饰静态方法,方法最后执行,并且只执行一次,用于释放资源

 

 

 

 


http://www.ppmy.cn/news/47420.html

相关文章

从头创建一个新的浏览器,这合理吗?

从头构建一个新浏览器?这如果是不是个天大的“伪需求”,便是一场开发者的噩梦! 要知道,如果没有上百亿的资金和数百名研发工程师的投入,从头开始构建一个新的浏览器引擎,几乎是不可能的。然而SerenityOS系统…

Ubuntu18.04通过一根网线与树莓派建立连接,远程操作树莓派,向树莓派传文件

文章目录 前言1 树莓派设置静态IP1.1 不能登录到树莓派的图形化界面1.2 可以登录到树莓派的图形化界面 2 PC端的ubuntu18.04设置静态ip地址2.1 不使用图形化界面操作2.2 使用图形化界面进行操作 3 Putty软件3 FileZilla软件 前言 本篇博客的应用场景,前提条件如下&a…

【原理图专题】OrCAD Capture 设计规则(DRC)检查

在原理图设计完成后,需要进行DRC检查,DRC检查能协助工程师快速检查原理图的物理、电气规则是否正确,能快速定位错误和原因。 DRC检查从Capture 工具栏中如下图红框所示的图标中Design Rules Check进入 进入后将打开DRC窗口,有四个选项卡。分别是Design Rules Options、Elec…

区域检验管理系统(云LIS)源码

1、区域检验管理系统(云LIS)概述 云LIS是为区域医疗提供临床实验室信息服务的计算机应用程序,可协助区域内所有临床实验室相互协调并完成日常检验工作,对区域内的检验数据进行集中管理和共享,通过对质量控制的管理&am…

OrCAD创建原理图库

OrCAD创建原理图库 概述常规器件建库方法大封装器件建库基于pinout表格创建原理图库导入方法: 通过fsp软件导入fpga原理图库 概述 原理图库是硬件设计的基本工作,每个新人都要先学会建库,才能开始画图,本文主要介绍几种常用的建库…

5.2 中心极限定理

学习目标: 要学习中心极限定理,我会采取以下几个步骤: 学习基本概念:了解什么是随机变量、样本、总体、概率密度函数等基本概念,为学习中心极限定理打下基础;学习正态分布:中心极限定理的核心…

vue.ts规范

Vue.js是一个非常流行的前端框架,支持使用TypeScript增加应用程序的类型安全性、可读性和可维护性。使用Vue.js和TypeScript进行混合编程需要一些额外的工作,今天我来为大家介绍一些Vue.js和TypeScript混合编程的最佳实践。 1.安装TypeScript和Vue.js类型…

TexMaker(Latex编辑器)软件的“文献引用”操作:Xelatex方式运行的操作方法

一、说明 1. 针对问题 本文主要讲解使用TexMaker进行**.bib的方法**的文献引用时,如何使用Xelatexpdf的方式完成文献引用。某些文章强调使用PDFlatex进行编译,但有时候会因为论文模板不同,无法运行padflatexPDF。所以,这里给出xe…

C# 屏幕截图

C# 屏幕截图 c#实现屏幕截图 Graphics 类的CopyFromScreen方法可以拿到整个屏幕的截图,屏幕截图的实现主要就是用到了他 思路是首先将整个屏幕的图像截取下来,然后作为一个窗体的背景显示给用户,由用户选择要截取的区域 后,保存图…

移动版OpenAI,手机的杀手还是救星?

AI登陆手机,难度因人而异。 原本小编还以为「2023年是属于元宇宙的一年」,实在没想到以ChatGPT为代表的AI技术能在这么短的时间内抢走元宇宙的风头,成为2023年的技术关键词。从OpenAI到搜索引擎、从绘图工具到游戏公司,几乎所有「…

2. VBA Excel宏

在本章中,我们来学习如何逐步编写一个简单的宏。 第1步 - 首先,在Excel 2016中启用“开发者”菜单。要完成这个设置,请点击左上角菜单:文件 -> 选项。如下图所示 - 第2步 - 点击“自定义功能区”选项卡并选中“开发工具”。然…

【uniapp】sigmob广告加载失败:-5005、500422没有imei的解决办法(原创可用)

问题 最近打算将开发的uniapp应用对接uni-ad广告中去,在对接sigmob的时候出现了以下问题:①错误码-5005,查询了以下官方文档,发现是说我频繁调用,可是并没有,我是在真机上测试的没成功就没在弄了&#xff…

pyest+appium实现APP自动化测试,思路全总结在这里

目录 01、appium环境搭建 2、搭建pythonpytestappium环境 3、安装pycharm搭建项目编写脚本 4、执行测试 绵薄之力 01、appium环境搭建 安装nodejs http://nodejs.cn/ 为什么要安装nodejs? 因为appium这个工具的服务端是由nodejs语言开发的 安装jdk&#xf…

Nginx+Tomcat负载均衡、动静分离

1.Tomcat多实例部署 Tomcat的多实例部署简单的讲就是基于端口的虚拟主机设置 步骤一:安装jdk (1)关闭防火墙和selinux,防止其对安装过程的干扰 (2)将准备好的软件包拖入/opt目录下,进行安装 #某rpm包尚未…

“C语言之美:结构体、联合体和枚举的魔法“

目录 结构体 联合体 枚举 结构体 结构体是一种用户定义的数据类型,它允许我们将不同类型的数据组合在一起,形成一个单独的实体。结构体由多个元素(也称为成员)组成,并且每个元素可以是不同的数据类型,例…

ServletConfig和ServletContext 的介绍和代码实现

目录 ServletConfig ServletConfig 基本介绍 ServletConfig 类能干什么 为什么需要 ServletContext 1. 方案 1-DB 2. 方案 2-ServletCntext 代码实战 ServletContext ServletContext 基本介绍 ServletContext 可以做什么 代码实战 代码实战2 ServletConfig Servle…

netlink

Netlink套接字是用以实现内核进程和用户进程通信的一种特殊的进程间通信(IPC),从linux 2.2开始引入内核,当时名为AF_NETLINK,旨在提供一种更灵活的内核和用户空间的通信方法,用以替换笨拙的IOCTL. IOCTL 方式通信&…

dockerFile记录

后端打包dockerFile内容 FROM openjdk:8-alpine RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime RUN echo Asia/Shanghai > /etc/timezone ENV projectName operation RUN mkdir -p /home/${projectName} WORKDIR /home/${projectName} COPY ./ /home/${pro…

「OceanBase 4.1 体验」|国产分布式数据库不好用?别再打脸了

文章目录 分布式数据库分布式数据库有哪些?OceanBase4.1安装部署Index Skip Scan总结 随着互联网的高速发展和数据量的爆炸式增长,如何能够高效、可靠、安全地存储海量数据成为了每个企业的重要课题。 分布式数据库 分布式数据库通常是由多个独立的数据…

从底层理解类

函数调用约定_thiscall thiscall是对象调用类成员函数时的约定 class Role { public:int hp;int mp;int add(int a, int b){return hp mp a b;} }; int main() {Role r;r.add(100, 200); } 查看汇编代码 15: Role r;16: r.add(100, 200); 00F91B08 push 0C…