`
ymq267
  • 浏览: 130410 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
社区版块
存档分类
最新评论

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的最基本的东西基本是这样的,断言、测试异常,捕获异常,测试方法的性能。例子代码在附件中。
分享到:
评论

相关推荐

    1、junit学习之junit的基本介绍

    这篇博文可能是对JUnit的基本概念、用途和如何使用进行的介绍。以下是对JUnit的一些关键知识点的详细说明: 1. **JUnit简介**: JUnit是一个开源的、基于Java的测试框架,主要用于编写和运行面向对象程序的单元...

    Junit学习.rar

    JUnit是Java编程语言中最常用的单元测试框架之一,它允许开发者编写可执行的测试用例来验证代码的功能。这个“Junit学习.rar”压缩包显然包含了关于JUnit从3.8到4.9版本的学习资料,包括可能的操作手册、教程文档...

    junit4学习文档

    ### JUnit4 学习知识点详解 #### 一、JUnit4 概述 JUnit4 是 JUnit 测试框架的一个重大更新版本,它充分利用了 Java 5 的注解(Annotation)特性来简化测试用例的编写过程。注解是一种元数据,用于描述程序中的...

    JUnit学习资料JUnit学习资料

    ### JUnit学习资料知识点解析 #### 一、JUnit概述 **JUnit** 是一款开源的Java测试框架,专门用于编写和运行可重复利用的自动化测试。它最初由Ernst & Young公司的Kent Beck和Erich Gamma开发,自1998年以来一直是...

    JUnit学习笔记

    这篇博客“JUnit学习笔记”可能是博主GreatJone在深入学习JUnit过程中所做的记录和总结,包括了JUnit的基本概念、核心组件、使用方法以及一些高级特性。 首先,JUnit的核心理念是基于断言的测试,即编写特定的测试...

    junit ppt 学习文档

    本教程旨在深入浅出地介绍JUnit的基本概念、框架结构以及如何实际应用。 首先,让我们解决测试中的问题。在软件开发中,程序员应该写测试代码,但往往因为工作繁忙而忽视。传统的测试方式要求编写大量代码来验证...

    junit ppt 学习文档.ppt

    通过学习这个JUnit教程,你可以掌握如何有效地编写和组织测试用例,以提高代码质量,减少错误,并确保软件功能的稳定性。同时,理解JUnit的基本结构和断言机制对于进行有效的单元测试至关重要。

    JUNIT介绍JUNIT介绍

    为了深入学习和实践JUNIT 和TDD,可以参考提供的在线资源,包括如何在Eclipse中使用JUNIT、如何编写单元测试以及关于TDD的理论和实践文章。这些资料可以帮助开发者全面了解和掌握JUNIT 的使用,以及如何在实际项目中...

    junit5学习入门

    ### JUnit5学习入门知识点详解 #### 一、JUnit简介 JUnit是一个开源的Java单元测试框架,被广泛应用于软件开发中的测试驱动开发(TDD)流程之中。它支持开发者通过编写测试代码来验证软件功能是否符合预期,从而提高...

    Junit学习笔记~

    Junit学习笔记,希望有用~~~~~~~~~~~~~~~~~~~~~~

    Junit学习文档

    **JUnit 概述** JUnit 是一个广泛使用的 Java 编程语言的单元测试框架,由 Erich Gamma 和 Kent Beck 创建。它的主要目标是提供一个简单、高效的方式来验证代码的正确性,尤其是在开发过程中确保代码功能的独立性和...

    JUnit4学习方法

    ### JUnit4学习方法 #### 一、简介与背景 JUnit4是一款广泛应用于Java开发环境下的单元测试框架,它提供了一套简洁而强大的API来帮助开发者编写自动化测试代码。JUnit4相较于之前的版本,在语法和功能上都有显著...

    junit5.rar包含JUnit Platform + JUnit Jupiter + JUnit Vintage依赖jar包

    JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage,包含依赖包:junit-jupiter-5.5.1.jar,junit-jupiter-engine-5.5.1.jar,junit-jupiter-params-5.5.1.jar,junit-platform-launcher-1.5.1.jar,junit-...

    junit学习文档

    除了基本的断言方法,JUnit还提供了丰富的辅助断言类,如`Assert`,其中包含了`assertEquals()`、`assertTrue()`等方法,帮助我们验证测试结果。例如,在`Demo1Test`和`Demo2Test`中,`assertEquals()`用于比较预期...

    Junit测试学习文档

    本学习文档将深入探讨Junit测试的基本概念、用法以及高级特性。 一、Junit简介 Junit是由Ernst von Brucke和Erich Gamma创建的一个开源项目,它是Java平台上的一个单元测试框架,用于编写和运行可重复的测试。通过...

    junit5.jar

    《深入理解JUnit 5:Java单元测试框架的革新》 JUnit 5,作为Java开发者最常用的单元测试框架,是JUnit系列的最新...通过学习和掌握JUnit 5,我们可以编写出更加高效、可靠的测试代码,确保项目的稳定性和可维护性。

    Junit深入理解和学习的必备资料

    JUnit是Java编程语言中最常用的单元测试框架之一,它允许开发者编写可执行的测试用例来验证代码的功能。深入理解和学习JUnit对于任何Java开发者来说都至关重要,因为它有助于确保代码的质量、可维护性和可靠性。以下...

    JUNit教程:JUNit基本教程

    ### JUnit基本教程详解 #### 一、JUnit简介与重要性 JUnit 是一个用于 Java 编程语言的单元测试框架。...通过本文介绍的基本使用方法和高级特性,开发者可以更好地利用 JUnit 提升代码质量和测试效率。

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

    本文将深入探讨JUnit的学习,特别是结合Hamcrest和TestSuite的使用,以及阐述一些重要的测试原则。 首先,JUnit是Java编程语言的一个单元测试框架,它允许开发者编写可重复执行的测试用例,以验证代码功能的正确性...

Global site tag (gtag.js) - Google Analytics