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测试实例相关推荐

  1. java list 移除_java 中List删除实例详解

    java 中List删除实例详解 1.循环删除List中的元素 public static void main(String[] args) { List t=new ArrayList(); for ...

  2. java 计算器 junit测试_Java Junit测试

    使用junit做测试目的是尽量早的发现程序的bug,一个bug隐藏的时间越久,修复他的代价就越大. 1.Junit简介: Junit最初是由Erich Gamma 和 Kent Beck 编写的一个回 ...

  3. java可以多重继承吗_Java中的多重继承与组合vs继承

    java可以多重继承吗 有时我写了几篇有关Java继承,接口和组成的文章. 在这篇文章中,我们将研究多重继承,然后了解组成优于继承的好处. Java中的多重继承 多重继承是创建具有多个超类的单个类的能 ...

  4. java中有没有栈_Java中堆和栈有什么区别

    stack 和 heep 都是内存的一部分stack 空间小,速度比较快, 用来放对象的引用heep 大,一般所有创建的对象都放在这里.栈(stack):是一个先进后出的数据结构,通常用于保存方法(函 ...

  5. java 静态资源变量_Java中读取配置文件中的内容,并将其赋值给静态变量的方法...

    项目开发中某个功能需要抽取成方法写成一个工具类,提供给别人使用.写过工具类的人都知道,工具类中的方法一般都是静态方法,可以直接使用类名点方法名调用, 使用很方便,比如判断某个对象是否为空的方式Obje ...

  6. java单例代码_java中的单例模式的代码怎么写

    单例模式在我们日常的项目中十分常见,当我们在项目中需要一个这样的一个对象,这个对象在内存中只能有一个实例,这时我们就需要用到单例. 一般说来,单例模式通常有以下几种: 1.饥汉式单例 public c ...

  7. java 基本类型 引用_java中 引用类型 和 基本类型 有何区别?

    栈与堆都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. Java的堆是一个运行时数据区,类的(对象从中分配空间.这些对象通过new.newa ...

  8. java iter是否存在_Java中ListIterator和Iterator的区别以及ListIterator的应用

    Java中ListIterator和Iterator详解与辨析 在使用java集合的时候,都需要使用Iterator.但是java集合中还有一个迭代器ListIterator,在使用List.Arra ...

  9. delay在java中有什么用_java中DelayQueue的使用

    java中DelayQueue的使用 简介 今天给大家介绍一下DelayQueue,DelayQueue是BlockingQueue的一种,所以它是线程安全的,DelayQueue的特点就是插入Que ...

最新文章

  1. C#者重建C++之路 - 运行机制的差异
  2. event对象获取方法总结在google浏览器下测试
  3. Dictionary,hashtable, stl:map有什么异同?
  4. 【MFC】定义XP风格的工具栏
  5. 深度学习【目标检测】
  6. 一位在项目上的好友求助
  7. c语言循环控制结构的单元课程设计,C语言单元课程设计(张芝雨).pdf
  8. 母亲确诊的员工发烧 当当网通知全员在家办公
  9. 快速搭建react项目骨架(按需加载、redux、axios、项目级目录等等)
  10. 新浪微博自动发送微博 功能已实现(net)
  11. 常用编码软件简单使用记录 2 : 非自主编码器
  12. 合肥赛区结束,继续训练提升
  13. 51nod 1133 - 矩阵快速幂(模版) 快速乘 + 快速幂 + 矩阵快速幂
  14. matlab prn文件,prn文件扩展名,prn文件怎么打开?
  15. 未来,我们终将共同沐浴在实时光追之下
  16. pandas读取数据时,报错UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 0: invalid contin
  17. 抖音seo源码.源代码开发可二开搭建/抖音seo优化系统代开发
  18. 高质量项目管理-甘特图模板+教程(附下载包)/ PMP项目管理可用
  19. 系综理论(Ensemble Theory)
  20. 面试高频算法题补充系列:如何判断一个点是否在三角形内?

热门文章

  1. python高斯函数表达式_Python实现高斯函数的三维显示方法
  2. 华大 MCU 之六 SEGGER Embedded Studio 及 Ozone 使用 Jlink 调试
  3. export命令添加和删除环境变量
  4. CPU和内存之间——地址映射(理解很重要)
  5. C\C++ 结构体初始化的四种方法
  6. KR C、ANSI C、C89、C90、C95、C99 和 C11 的区别联系
  7. nfs上安装oracle,使用NFS安装oracle软件
  8. matlab基数排序,c语言 数据结构 利用随机函数产生N个随机整数,对这些数进行多种方法进行排序...
  9. Linux系统没有home分区,我的linux系统home分区挂不上了
  10. python打包不能在其他电脑打开、找不到指定模块,pyinstaller打包移植到别的电脑报错OSError: [WinError 126] 找不到指定的模块。...