关闭

junit学习之junit的基本介绍

标签: junit程序测试
625人阅读 评论(0) 收藏 举报
分类:
        Junit目前在一些大的公司或者相对规范的软件中使用的比较多,相当多的小公司并没有把单元测试看的太重要。在大点的公司开发人员每天上班后,第一件事情就是从svn上把自己负责的代码checkout下来,然后运行单元测试,如果单元测试通过,那么说明自己的代码没有问题,然后就在代码块上修改与添加,完成后再用junit进行测试,测试完成后如果没有问题,那么就把相应的代码块提交给svn上。

测试一般分为:单元测试、集成测试(主要看一块代码加进去后,系统会不会有问题)、验收测试和压力测试。

        假如一个项目非常的大,测试的东西非常的多,如果不用Junit的话,那么这个工作量是非常大的。单元测试的最基本的一个功能是能进行自动化测试。单元测试都是通过断言的方式来确定结果是否正确,即使用Assert。

一、准备工作

     1、从网站上下载junit的新版本,http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22junit%22%20AND%20a%3A%22junit%22 上下载相应的版本,这里下载的是junit4.7版本,下载地址如下:junit4.7.jar下载

     2、在eclipse中新建一个java项目,名称为JavaJunitTest(可随意),并再新建一个文件夹jar,用于存放我们下载的junit.jar包,然后把junit-4.7复制到里面jar里面,并使用右键add build path,即添加到类路径中,如下图所示:



     3、新建一个类JunitTest.java,如上图图所示结构,内容为:

package com.junit.test;

import org.junit.Assert;
import org.junit.Test;

public class JunitTest {
	@Test
	public void test2()
	{
		System.out.println("test2()");
		int rel=12;
		Assert.assertEquals("不符合结果",2, rel);
	}
} 

二、进行测试

    1、在junit4中提供了一个Assert的类,这个类中有大量的静态方法进行断言的处理,在junit3中由于继承了TestCase,这个TestCase就可以直接assert,而junit4中需要先引入Assert类。如下面代码的使用,其中Assert是断言,在assertEquals方法中,第一个参数是错误时输出结果,第二个参数是程序员预期的结果,而第三个参数是实际结果

package com.junit.test;
import org.junit.Assert;
import org.junit.Test;
public class JunitTest {
	@Test
	public void test2()
	{
		System.out.println("test2()");
		int rel=23;
		Assert.assertEquals("不符合结果",2, rel);
	}
}

      在使用了Assert类中的assertEquals方法,这方法的第一个参数意思是:如果rel的结果不为2,那么就会打印出“加法有问题”的信息。

如下图所示结果:

 


      使用junit测试比使用main方法测试有很大的不同的,每个标识为@Test的方法都是一个可运行的方法,并且他们之间互不影响,例如一个方法出现问题了,并不影响另外一个方法的运行。这就是单元测试的好处

      2、在测试除法除数为0,这个方法应该会抛出异常。如下图现在的测试目标是,如果运行测试方法时,方法没有处理异常,那么这个测试方法就不能通过。那么如何判断不能通过呢,那就是没有进行到Assert断言处,这时就会报ArithmeticException。


 如下图所示,我们对异常进行处理,我们就能够看到程序运行结束,在Assert处获得rel的值仍为初始化时的值0       那么我们都知道有异常发生,那么我们就给这个方法直接给这个方法断言有异常,使用代码:@Test(expected=ArithmeticException.class)实现

package com.junit.test;
import org.junit.Assert;
import org.junit.Test;
public class JunitTest {
	@Test(expected=ArithmeticException.class)
	public void test2()
	{
		System.out.println("test2()");
		int rel=0;
		try{
		rel=2/0;
		}catch(Exception e)
		{e.printStackTrace();}
		//System.out.println("end");
		Assert.assertEquals("不符合结果",2, rel);
	}
}
结果如下所示:


          上图中,我们断言运算中会抛出异常expected=ArithmeticException.class,结果也抛出异常expected=ArithmeticException.class,所以junit测试是通过的。

下面我们再测一测如果我们断言有异常,但是算法中没有异常,结果如下图所示:显示我们期望的异常而不能正常运算


    2、有时在测试时需要有这样的需求,就是对一个方法的时间进行测试,例如,要让一个方法,200毫秒里运行完,如果这个方法200毫秒不能运行完,那么这个方法就应该抛出异常,示例中将方法time中线程沉睡300毫秒,那么这个方法就不可能在200毫秒内完成,所以这个方法就会抛出异常。如下图所示:


因为发生异常,程序都没有运行结束,没输出结尾的end,这就可以做一些方法性能上的测试,把Thread去掉,那么这个测试就可正常通过。


1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

JUnit4注解基本介绍

@After If you allocate external resources in a Before method you need to release them after the test...
  • a19881029
  • a19881029
  • 2013-08-01 09:28
  • 16764

面试之JAVA基础Junit了解

什么叫Junit     Junit是一个java单元测试框架 是 对程序进行白盒测试 一般来说要对一个方法进行测试其结果 可以写一个main入口 然后调用其方法来进行测试结果;而junit就是省去这...
  • x605940745
  • x605940745
  • 2014-02-27 21:35
  • 2867

Junit3和Junit4对比及Junit介绍

JUnit测试工具使用手册 一、 简介 我们在编写大型程序的时候,需要写成千上万个方法或函数,有的函数是供其他开发人员调用或使用的,因此每编写完一个函数之后,都应该对这个函数的方方面面进行测试,确...
  • xuweilinjijis
  • xuweilinjijis
  • 2013-05-08 13:21
  • 2218

JUnit4注解基本介绍

@After:释放资源 @Test:测试方法,在这里可以测试期望异常和超时时间 @Ignore:忽略的测试方法 @BeforeClass:针对所有测试,只执行一次,且必须为static void @A...
  • testdeveloper
  • testdeveloper
  • 2016-05-14 15:51
  • 197

JUnit学习笔记(一):基本用法

Junit学习笔记(一):基本用法
  • ggf123456789
  • ggf123456789
  • 2017-03-10 17:05
  • 247

JUnit学习(一) - 基础学习和介绍

本文借鉴和学习了这篇博客,若有错误烦请指出。 JUnit是一个开放源代码的Java测试框架,用于编写和运行可重复的测试。他是用于单元测试框架体系xUnit的一个实例(用于java语言...
  • Hey_Shirley
  • Hey_Shirley
  • 2016-12-16 18:06
  • 163

JUnit学习之hamcrest、testSuite介绍及测试原则

[转自] http://huihai.iteye.com/blog/1994270 上一节说了junit的一些基本概念,主要使用assert做一些基本的判断。但很多时候使用asser...
  • kolabb
  • kolabb
  • 2015-07-07 12:10
  • 315

junit基本教程

  • 2012-03-20 20:34
  • 129KB
  • 下载

junit-4.10.jar 基本jar包

  • 2017-12-05 15:04
  • 213KB
  • 下载

Junit 基本教程

  • 2013-07-23 13:56
  • 41KB
  • 下载
    个人资料
    • 访问:464392次
    • 积分:6578
    • 等级:
    • 排名:第4236名
    • 原创:230篇
    • 转载:107篇
    • 译文:0篇
    • 评论:61条
    博客专栏
    最新评论