`

Junit学习-基础介绍

阅读更多
摘自http://huihai.iteye.com/blog/1986568

junit学习之junit的基本介绍
Junit目前在一些大的公司或者相对规范的软件中使用的比较多,相当多的小公司并没有把单元测试看的太重要。在大点的公司开发人员每天上班后,第一件事情就是从svn上把自己负责的代码checkout下来,然后运行单元测试,如果单元测试通过,那么说明自己的代码没有问题,然后就在代码块上修改与添加,完成后再用junit进行测试,测试完成后如果没有问题,那么就把相应的代码块提交给svn上。
测试一般分为:单元测试、集成测试(主要看一块代码加进去后,系统会不会有问题)、验收测试和压力测试。

在以前的的项目中也用过Junit,当时的使用只是把Junit当成一个有多个main方法的一个函数。假如一个项目非常的大,测试的东西非常的多,如果不用Junit的话,那么这个工作量是非常大的。单元测试的最基本的一个功能是能进行自动化测试。单元测试都是通过断言的方式来确定结果是否正确,即使用Assert。

1、从网站上下载junit的新版本,http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22junit%22%20AND%20a%3A%22junit%22 上下载相应的版本,这里下载的是junit4.10
2、在myeclipse中新建一个java项目,名称为junit01,并在新建一个文件夹,名称为lib,把上面下载的junit-4.10复制到里面,并build path,即添加到类路径中,如下图所示:


3、新建一个类Calcuate,其功能主要实现加减乘除,如下图所示,其所在的包为cn.whp.util


4、创建上面的类Calcuate中新建测试类,首先在myeclipse中创建一个source folder,将其命名成test,然后在其下创建一个与类Calcuate类在相同包的包,如下图所示:



5、junit3与junit4的区别还是比较明显的,在junit3中,如果某个类是测试类,必须将其继承类TestCase,如果某个方法是测试方法,必须让这个方法以testXX开头,如果希望指定某个测试方法运行之前运行某个初始化方法,这个方法的名称必须是setUp,如果希望在某个测试方法运行之后运行某个释放资源的方法,这个方法的名称必须是tearDown。
在junit4中,一个POJO类就是一个测试类,测试方法通过@Test来标识,初始化方法通过@Before来标识,释放资源的方法通过@After来标识,但是为了让junit4的测试类在junit3中也可以使用,习惯于把初始化方法命名为setUp,释放资源的方法命名为tearDown。Test中的测试方法一般以Test来开始。其中标识为Before注解的方法,每次运行测试类,都会执行标识为@After与@Before的方法。如下图所示:


6、在junit4中提供了一个Assert的类,这个类中有大量的静态方法进行断言的处理,在junit3中由于继承了TestCase,这个TestCase就可以直接assert,而junit4中需要先引入Assert类。如下图:

在上图中使用了Assert类中的assertEquals方法,这方法的第一个参数意思是:如果方法cal.add(12,22)计算的结果不为34,那么就会打印出“加法有问题”的信息。第二个参数为方法cal.add(12,22)的执行结果,第三个参数是开发人员预计的函数cal.add(12,22)执行后的结果,这里预计12与22相加后其结果为34,如果在执行测试方法后,rel不等于34,那么就会报加法有问题。如果结果等于34,那么这个方法就测试通过。把上图中最后一个参数的值34改成35,那么执行junit测试后将会出现如下错误:

如果想让上面的测试类可以在junit3中运行,可以把Assert类静态的导入,这样在调用每个静态方法时,就不用都写上Assert类了,如下图所示:

然后把所有别的测试方法补全,使用junit测试比使用main方法测试有很大的不同的,每个标识为@Test的方法都是一个可运行的方法,并且他们之间互不影响,例如testAddd方法出现问题了,并不影响testMinus方法的运行。这就是单元测试的好处,如下图:

7、在测试除法cal.divide(3,0),如果除数为0,这个方法应该会抛出异常。现在的测试目标是,如果运行测试方法后,测试方法没有抛出异常,那么这个测试方法就不能通过。这时就需要用到junit的ArithmeticException。如下图所示:


这里如果把cal.divide(20,0)改成cal.divide(20,10),这样divide是没有问题的,但是这时测试类中的testDivideException方法执行junit测试后就不能通过了,因为这个测试方法已经断言所要测试的方法divide要抛出异常,结果没有抛出异常,所以junit测试是不能通过的。如下图所示:

测试结果提示,应该抛出一个异常,结果没有抛出异常。

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


10、Junit的最基本的东西基本是这样的,断言、测试异常,捕获异常,测试方法的性能。例子代码在附件中。
分享到:
评论

相关推荐

    JUnit实战--原书第2版

    本书适合于已具有一定Java编程基础的读者,以及在Java平台上进行各类软件开发的开发人员和测试人员。对于单元测试学习者来说,这本书具有极高的参考价值。

    JUnit实战--原书第2版.pdf )

    本书适合于已具有一定Java编程基础的读者,以及在Java平台上进行各类软件开发的开发人员和测试人员。对于单元测试学习者来说,这本书具有极高的参考价值。

    Junit基础教程与学习

    此文档非常有助于刚刚接触junit的人来学习,图文并茂,很容易上手!

    junit4基础教程

    junit4基础教程合集,适合初学者学习,简单明了,易于学习,希望大家能认真阅读

    Junit实战第二版

    《JUnit实战(第2版)》不仅仅介绍了使用JUnit框架测试项目必须掌握的核心概念,还指导读者如何使用JUnit框架编写自己的测试用例,并针对在编写代码的过程中如何使得代码可测试给出建议。本书还介绍了基础的软件开发...

    Junit实战第二版 中文完整版

    JUnit实战(第2版)本书从认识JUnit、不同的测试策略、JUnit与构建过程、JUnit扩展4个方面,由浅入深、由易到难地对JUnit展开了系统的讲解,包括探索JUnit的核心、软件测试原则、测试覆盖率与开发、使用stub进行粗粒度...

    Junit实战(第2版)

    本书从认识JUnit、不同的测试策略、JUnit与构建过程、JUnit扩展4个方面,由浅入深、由易到难地对JUnit展开了系统的讲解,包括探索JUnit的核心、软件测试原则、测试覆盖率与开发、使用stub进行粗粒度测试、使用mock...

    junit 4 资料

    其中 Erich Gamma 是经典著作《设计模式:可复用面向对象软件的基础》一书的作者之一,并在 Eclipse 中有很大的贡献;Kent Beck 则是一位极限编程(XP)方面的专家和先驱。 麻雀虽小,五脏俱全。JUnit 设计的非常...

    JUnit 5.pdf

    JUnit 5中文学习文档。JUnit 5是JUnit的下一代。目标是为JVM上的开发人员端测试创建一个最新的基础。这包括专注于Java 8及更高版 本,以及启用许多不同风格的测试。

    jUnit入门教程 jUnit教程

    学习时候从网络上整理的juint资料,非常基础.

    ALevin配置环境所需要的基础包——JUnit

    ALevin配置环境所需要的基础包——JUnit5.8.2版 适合人群: 对虚拟网络嵌入算法感兴趣的人 能学到什么: 可以帮助大家更快的配置好ALevin运行环境 阅读建议: ALevin作为一个很好的虚拟网络仿真平台,它的开源给我们...

    Junit基础培训

    Junit是unit中的一类,比较好比较实用,大家可以学习一下

    JUnit入门

    最基础的JUnit学习文档, 初学者可以下拿去看看

    书本源码--JavaWeb 实战开发完全学习手册

    Java Web实战开发完全学习手册》共分15章,全面系统地介绍了JavaWeb相关的知识,主要包括JavaWeb开发基础、HTML与CSS网页开发基础、JavaScript基础、JSP基本语法、JSP隐式对象、JDBC技术应用、Servlet技术应用、...

    使用Junit对Android应用进行单元测试

    JUNIT单元测试在本文中,你将会学习到如何在Eclipse中创建AndroidJUnit的单元测试工程以及在不同的条件下创建及运行自动测试用例。准备工作本文假设读者已经有一定的Android基础知识,并且已经安装了Eclipse和...

    循序渐进学习Junit

    使用最流行的开放资源测试框架之一学习单元测试基础。使用JUnit可以大量减少Java代码中程序错误的个数,JUnit是一种流行的单元测试框架,用于在发布代码之前对其进行单元测试。现在让我们来详细研究如何使用诸如...

    使用eclipse与Junit4进行单元测试的最简单例子(包括文档与源码)

    使用eclipse与Junit4进行单元测试的最简单例子(包括文档与源码) 一起学习吧!

    基于BootStrap和SpringBoot的学生信息管理系统,支持增删改查等基础操作,适合个人web开发学习,毕业设计或课设等

    基于BootStrap和SpringBoot的学生信息管理系统,支持增删改查等基础操作,适合个人web开发学习,毕业设计或课设等 以 Maven 架构项目,使用 JSP + Servlet 开发以及 Spring + SpringMVC + MyBatis 框架;采用 c3p0 ...

    apache-groovy-sdk-3.0.9.zip

    编写第一个 Groovy 类,然后学习如何使用 JUnit 轻松地进行测试。借助功能完善的 Groovy 开发环境和使用技能,您将轻松完成本教程的学习。最重要的是,您将学会如何在日常 Java 应用程序开发中联合使用 Groovy 和 ...

Global site tag (gtag.js) - Google Analytics