java 计算器 junit测试_Java中Junit4测试实例
Junit简介
JUnit: JUnit是一个Java语言的单元测试框架。
单元测试:单元测试的目的不是证明你的程序是正确的,而是证明你的程序没有错误
目前流行的版本3.8和4.0
Junit3.X:需要继承于TestCase
Junit4.0:增加了annotation注解
测试方法
@Test
注意:JUnit推荐的做法是以test作为待测试的方法的开头,这样这些方法可以被自动找到并被测试。
断言
@BeforeClass修饰的方法会在所有方法被调用前被执行,而且该方法是静态的,所以当测试类被加载后接着就会运行它, 而且在内存中它只会存在一份实例,它比较适合加载配置文件。
@AfterClass所修饰的方法通常用来对资源的清理,如关闭数据库的连接。
@Before和@After会在每个测试方法的前后各执行一次。
Failure一般由单元测试使用的断言方法判断失败所引起的,这经表示 测试点发现了问题 ,就是说程序输出的结果和我们预期的不一样。
error是由代码异常引起的,它可以产生于测试代码本身的错误,也可以是被测试代码中的一个隐藏的bug。
测试用例不是用来证明你是对的,而是用来证明你没有错。
最恐怖的bug是逻辑bug.
最佳实践方式
1.测试方法上必须使用@Test进行修饰
2.测试方法必须使用public void 进行修饰,不能带任何的参数
3.新建一个源代码目录来存放我们的测试代码
4.测试类的包应该和被测试类保持一致
5.测试单元中的每个方法必须可以独立测试,测试方法间不能有任何的依赖
6.测试类使用Test作为类名的后缀(不是必须)
7.测试方法使用test作为方法名的前缀(不是必须)
常用注解
@Test(expected=ArithmeticException.class)
@Ignore("提示信息")//所修饰的测试方法会被测试运行器忽略
@Test(timeout=2000)//设置超时时间
@RunWith //可以更改测试运行器 org.junit.runner.Runner
junit4 assert类中的assert方法总结 :
junit中的assert方法全部放在Assert类中,总结一下junit类中assert方法的分类。
1.assertTrue/False([String message,]boolean condition);
判断一个条件是true还是false。
2.fail([String message,]);
失败,可以有消息,也可以没有消息。
3.assertEquals([String message,]Object expected,Object actual);
判断是否相等,可以指定输出错误信息。
第一个参数是期望值,第二个参数是实际的值。
这个方法对各个变量有多种实现。在JDK1.5中基本一样。
但是需要主意的是float和double最后面多一个delta的值,可能是误差范围
4.assertNotNull/Null([String message,]Object obj);
判读一个对象是否非空(非空)。
5.assertSame/NotSame([String message,]Object expected,Object actual);
判断两个对象是否指向同一个对象。看内存地址。
7.failNotSame/failNotEquals(String message, Object expected, Object actual)
当不指向同一个内存地址或者不相等的时候,输出错误信息。
注意信息是必须的,而且这个输出是格式化过的。
一。先编写实体类 MyCaculator.java
package com.entity;
//计算器类
public class MyCaculator {
public int add(int x,int y) ///加法
{
return x+y;
}
public int sub(int x,int y) //减法
{
return x-y;
}
public int multi(int x,int y) //乘法
{
return x*y;
}
public double div(int x,int y) //除法
{
return x/y;
}
}
二。编写测试类 TestMyCaculator.java
package com.entity;
import org.junit.Test;
import junit.framework.Assert;
public class TestMyCaculator {
private static MyCaculator c = new MyCaculator(); // 创建对象
// 测试加法
@Test
public void testAdd() {
int result = c.add(10, 5);
Assert.assertEquals(15, result);
}
// 测试减法
@Test
public void testSub() {
int result = c.sub(10, 5);
Assert.assertEquals(5, result);
}
// 测试乘法
@Test
public void testMulti() {
int result = c.multi(10, 5);
Assert.assertEquals(50, result);
}
// 测试除法
@Test(expected = ArithmeticException.class)
public void testDiv() {
double result = c.div(10, 5); // 算数异常,这里抛出异常了。
// 这个断言执行不到。
Assert.assertEquals(3, result);// 这个断言能通过吗?
}
}
需要导入的jar包:junit-4.10.jar
java 计算器 junit测试_Java中Junit4测试实例相关推荐
- java list 移除_java 中List删除实例详解
java 中List删除实例详解 1.循环删除List中的元素 public static void main(String[] args) { List t=new ArrayList(); for ...
- java 计算器 junit测试_Java Junit测试
使用junit做测试目的是尽量早的发现程序的bug,一个bug隐藏的时间越久,修复他的代价就越大. 1.Junit简介: Junit最初是由Erich Gamma 和 Kent Beck 编写的一个回 ...
- java可以多重继承吗_Java中的多重继承与组合vs继承
java可以多重继承吗 有时我写了几篇有关Java继承,接口和组成的文章. 在这篇文章中,我们将研究多重继承,然后了解组成优于继承的好处. Java中的多重继承 多重继承是创建具有多个超类的单个类的能 ...
- java中有没有栈_Java中堆和栈有什么区别
stack 和 heep 都是内存的一部分stack 空间小,速度比较快, 用来放对象的引用heep 大,一般所有创建的对象都放在这里.栈(stack):是一个先进后出的数据结构,通常用于保存方法(函 ...
- java 静态资源变量_Java中读取配置文件中的内容,并将其赋值给静态变量的方法...
项目开发中某个功能需要抽取成方法写成一个工具类,提供给别人使用.写过工具类的人都知道,工具类中的方法一般都是静态方法,可以直接使用类名点方法名调用, 使用很方便,比如判断某个对象是否为空的方式Obje ...
- java单例代码_java中的单例模式的代码怎么写
单例模式在我们日常的项目中十分常见,当我们在项目中需要一个这样的一个对象,这个对象在内存中只能有一个实例,这时我们就需要用到单例. 一般说来,单例模式通常有以下几种: 1.饥汉式单例 public c ...
- java 基本类型 引用_java中 引用类型 和 基本类型 有何区别?
栈与堆都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. Java的堆是一个运行时数据区,类的(对象从中分配空间.这些对象通过new.newa ...
- java iter是否存在_Java中ListIterator和Iterator的区别以及ListIterator的应用
Java中ListIterator和Iterator详解与辨析 在使用java集合的时候,都需要使用Iterator.但是java集合中还有一个迭代器ListIterator,在使用List.Arra ...
- delay在java中有什么用_java中DelayQueue的使用
java中DelayQueue的使用 简介 今天给大家介绍一下DelayQueue,DelayQueue是BlockingQueue的一种,所以它是线程安全的,DelayQueue的特点就是插入Que ...
最新文章
- C#者重建C++之路 - 运行机制的差异
- event对象获取方法总结在google浏览器下测试
- Dictionary,hashtable, stl:map有什么异同?
- 【MFC】定义XP风格的工具栏
- 深度学习【目标检测】
- 一位在项目上的好友求助
- c语言循环控制结构的单元课程设计,C语言单元课程设计(张芝雨).pdf
- 母亲确诊的员工发烧 当当网通知全员在家办公
- 快速搭建react项目骨架(按需加载、redux、axios、项目级目录等等)
- 新浪微博自动发送微博 功能已实现(net)
- 常用编码软件简单使用记录 2 : 非自主编码器
- 合肥赛区结束,继续训练提升
- 51nod 1133 - 矩阵快速幂(模版) 快速乘 + 快速幂 + 矩阵快速幂
- matlab prn文件,prn文件扩展名,prn文件怎么打开?
- 未来,我们终将共同沐浴在实时光追之下
- pandas读取数据时,报错UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 0: invalid contin
- 抖音seo源码.源代码开发可二开搭建/抖音seo优化系统代开发
- 高质量项目管理-甘特图模板+教程(附下载包)/ PMP项目管理可用
- 系综理论(Ensemble Theory)
- 面试高频算法题补充系列:如何判断一个点是否在三角形内?
热门文章
- python高斯函数表达式_Python实现高斯函数的三维显示方法
- 华大 MCU 之六 SEGGER Embedded Studio 及 Ozone 使用 Jlink 调试
- export命令添加和删除环境变量
- CPU和内存之间——地址映射(理解很重要)
- C\C++ 结构体初始化的四种方法
- KR C、ANSI C、C89、C90、C95、C99 和 C11 的区别联系
- nfs上安装oracle,使用NFS安装oracle软件
- matlab基数排序,c语言 数据结构 利用随机函数产生N个随机整数,对这些数进行多种方法进行排序...
- Linux系统没有home分区,我的linux系统home分区挂不上了
- python打包不能在其他电脑打开、找不到指定模块,pyinstaller打包移植到别的电脑报错OSError: [WinError 126] 找不到指定的模块。...