JUnit---Java单元测试必备工具

 

在我们每天业务代码都写不完,为什么还要写测试代码呢,项目完成之后我再测不行吗?

看起来像是增加了代码量,但是它恰恰帮你减少了后期测试排错的时间,每个team,每个人都是有Bug指标的,首先,每次你那么多bug绩效就不好看;其次,这恰能让我们写的代码更健壮,提升代码质量,后期调试,维护也更容易。试想,你是想后期加班debug呢,还是想在写每个业务的时候就进行正确性测试,留出更多的时间陪女朋友,陪家人来的更爽

 

一、JUnit4快速入门

        1、JUnit4的简单介绍

              官网:  http://junit.org/

JUnit是一个可编写可复用测试集的简单框架,是xUnit的一个子集。

               那么什么又是xUnit呢?

               xUnit是一套基于测试驱动开发的测试框架,其家族成员众多,包括PythonUnit、CppUnit(C++)、JUnit(JAVA)

               JUnit是托管在Github上的,包含junit.jar、hamcrest-core.jar(设置匹配性规则,是junit的功能增强)两个包

         

        2、为什么要使用Junit

                测试框架可以帮我们对写的程序进行有目的的测试,能帮我们最大限度的避免代码中的bug,是程序达到预期的效果,通常一个完整的项目会包含成千上万,甚至更多的方法,那么如何确定这些方法的结果都是我们想要的,就变得重要。当然也可以创建很多的main函数,使用很多的System.out.println()方法测试每个方法,将结果输出到控制台,但是我想没人愿意做这样枯燥繁琐的事情,而且,这种方式存在明显的缺点,测试方法不能一起运行,其结果多数都需要程序员自己观察才可以判定。

                幸运的是Junit让这一切简单优雅起来,Junit使用断言机制,可以直接将我们预期的结果和程序最终的结果进行比对,确保对结果的可预知性。

         

        3、如何开发测试用例

              Eclipse中包含了Junit的测试框架

二、JUnit4使用详解

          1、使用方法

              ①、测试方法必须使用@Test进行修饰

              、测试方法必须使用public void进行修饰,不能带任何的参数

              、新建一个源代码目录来存放我们的测试代码,发布的项目不能包含测试代码,所以在src源代码目录新建一个test文件夹,与项目代码分离,发布的时候直接删除test文件夹就可以了。

              、测试类的包应该和被测试类保持一致

              、测试单元中的每个方法必须可以独立测试,测试方法间不能有任何的依赖

              、测试类使用Test作为类型后缀(不是必须)

              、测试方法使用test作为方法名前缀(不是必须)

          2、测试失败的两种情况

               Failure一般由单元测试使用的断言方法判断失败所引起的,这表示经测试发现了问题,就是说程序输出的结果和我们预期的不一样

               Error是由代码异常引起的,它可以产生于测试代码本身的错误,也可以是被测试代码中的一个隐藏的bug

               测试用例不是用来证明你是对的,而是用来证明你没有错

               测试用例只是用来达到你想要的预期结果,但对于逻辑错误无能为力。

          3、JUnit运行流程

                 ① @BeforeClass修饰的方法会在所有方法被调用之前被执行,而且该方法是静态的,所以当测试类被加载后马上就会运行它,而且在内存中他只会存在一份,所以他比较适合加载配置文件或只适合加载一次的东西。

                 ② @AfterClass修饰的方法通常用来对资源进行清理,如关闭数据库的连接

                 ③ @Before和@After会在每个测试方法的前后各执行一次

用这四个注解修饰的代码可以理解为固定代码,即一定会被执行的代码

          4、JUnit4中的常用注解

                  @Test:将一个普通的方法修饰成为一个测试方法,还提供了处理异常和限时测试的功能

                       @Test(expected = xxException.class)

                       @Test(timeout=毫秒),对死循环进行测试,也可以进行简单的性能测试

                  @BeforeClass:它会在所有的方法运行前被执行,static修饰

                  @AfterClass:它会在所有的方法运行结束后被执行,static修饰

                  @Before:会在每一个测试方法被运行前执行一次

                  @After:会在每一个测试方法被运行后执行一次

                  @Ignore:所修饰的测试方法会被测试运行器忽略

                  @RunWith:可以更改测试运行器,继承org.junit.runner.Runner

                  断言

三、JUnit4的深入使用

         1、Junit测试套件的使用

                在实际项目中,随着开发的深入,项目会越来越大,相应的测试类也会越来越多,那么总不能一个一个的运行吧,JUnit测试套件就提供了批量运行的方法

                ① 测试套件就是组织 测试类一起运行的

                ② 写一个类作为测试套件的入口类,这个类里不包含其他的方法,更改测试运行器Suite.class,将要测试的类作为数组传入到Suite.SuiteClasses({})

         2、JUnit参数化设置

                 ① 更改默认的测试运行器为RunWith(Parameterized.class)

                 ② 声明变量来存放预期值和结果值

                 ③ 声明一个返回值为Collection的公共静态方法,并使用@Parameters进行修饰

                 ④ 为测试类声明一个带有参数的公共构造函数,并在其中为之声明变量赋值

四、Junit4在web项目中的使用

        Spring与hibernate的整合测试

           我们在使用开源框架进行项目开发时,框架之间的整合无疑是出错率比较高的地方,可以使用JUnit进行对Spring于hibernate的整合测试

 

来自为知笔记(Wiz)

时间: 2024-12-14 15:18:03

JUnit---Java单元测试必备工具的相关文章

Junit Java单元测试

Junit是一种java单元测试的工具,让我们的测试提高效率 入门篇 我们先来看一个测试加法add的例子 先创建一个AddOperation的类(我们要测试的类) package work; publicclass AddOperation { publicint add(int x,int y){ return x+y; } } 给该类添加测试类 详细请看图 选择你要测试的类 package work; importstatic org.junit.Assert.*; import org.j

Java单元测试框架 JUnit

Java单元测试框架 JUnit JUnit是一个Java语言的单元测试框架.它由Kent Beck和Erich Gamma建立,逐渐成为源于KentBeck的sUnit的xUnit家族中为最成功的一个. JUnit有它自己的JUnit扩展生态圈.多数Java的开发环境都已经集成了JUnit作为单元测试的工具. 在线Javadoc:http://ww...更多JUnit信息 最近更新: JUnit 4.12 发布,Java 单元测试框架 发布于4个月前 C++模拟测试框架 Google Mock

Java单元测试(Junit+Mock+代码覆盖率)

原文见此处 单元测试是编写测试代码,用来检测特定的.明确的.细颗粒的功能.单元测试并不一定保证程序功能是正确的,更不保证整体业务是准备的. 单元测试不仅仅用来保证当前代码的正确性,更重要的是用来保证代码修复.改进或重构之后的正确性. 一般来说,单元测试任务包括 接口功能测试:用来保证接口功能的正确性. 局部数据结构测试(不常用):用来保证接口中的数据结构是正确的 比如变量有无初始值 变量是否溢出 边界条件测试 变量没有赋值(即为NULL) 变量是数值(或字符) 主要边界:最小值,最大值,无穷大(

Java 单元测试及JUnit的使用

Java 单元测试: 单元测试是开发者编写的一小段代码,用于检测被测代码的一个很小的.很明确的功能是否正确.  单元测试的方法: 人工静态分析:人工阅读检测代码 自动静态分析:使用代码复查工具检查 自动动态测试:用工具自动生成测试用例并执行被测程序 人工动态测试:人工设定程序的输入和预期输出,执行程序.    Junit 单元测试: 它是人工动态测试 支持语言C++.Java,支持的IDE: Eclipse 功能:用单独的classloader来运行每个单元测试 标准的资源初始化和回收方式(se

Java单元测试工具:JUnit4(一)(二)(三)(四)

Java单元测试工具:JUnit4(一)--概述及简单例子 Java单元测试工具:JUnit4(二)--JUnit使用详解 Java单元测试工具:JUnit4(三)--JUnit详解之运行流程及常用注解 Java单元测试工具:JUnit4(四)--JUnit测试套件使用及参数化设置

Java单元测试(Junit+Mock+代码覆盖率)---------转

Java单元测试(Junit+Mock+代码覆盖率) 原文见此处 单元测试是编写测试代码,用来检测特定的.明确的.细颗粒的功能.单元测试并不一定保证程序功能是正确的,更不保证整体业务是准备的. 单元测试不仅仅用来保证当前代码的正确性,更重要的是用来保证代码修复.改进或重构之后的正确性. 一般来说,单元测试任务包括 接口功能测试:用来保证接口功能的正确性. 局部数据结构测试(不常用):用来保证接口中的数据结构是正确的 比如变量有无初始值 变量是否溢出 边界条件测试 变量没有赋值(即为NULL) 变

Java 单元测试Junit

@Test @Before @After 测试方法运行前执行Before动作(比如创建资源),运行后执行After动作(比如销毁资源) @BeforeClass @AfterClass 测试类运行前执行Before动作(比如创建资源),运行后执行After动作(比如销毁资源) Assert 对方法结果进行判断,是否等于希望值,是否为空等 表示测试通过不通过 Java 单元测试Junit,布布扣,bubuko.com

Java单元测试Junit的Annotation介绍

单元测试是开发者的业界良心 Java开发中常以Junit作为测试框架,而且Junit也成为Java社区测试方面的事实标准,可以百度一些看看Junit的相关介绍.目前Junit发展到了Junit4.x版本,相对之前的Junit3.x版本有着明显的变化就是使用了Annotation的方式来注解测试用例. 下面是关于Junit4.x的常用注解说明图: Java单元测试Junit的Annotation介绍

微信开发必备工具 php和java开发语言

微信开发必备工具下载地址: http://download.csdn.net/detail/wyx100/8801941 工具: xmlmarker_1_1_setup sqldeveloper portecle-1.7 Notepad_6.7.9 KeyTool_GUI_1.6 工具和教程 jad v1.5.8g eclipse 官网:http://www.eclipse.org/downloads/