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

看起来像是增加了代码量,但是它恰恰帮你减少了后期测试排错的时间,每个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的整合测试
 
 

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

  1. Java开发必备工具 ------------工欲善其事,必先利其器

    java企业级开发基本工具 一.开发必备工具 1.Java开发环境 JDK (官网下载即可,需要注册账户) JRE 2.Java企业编码开发工具 IntelliJ IDEA(建议使用Idea,插件使用 ...

  2. JUnit java单元测试

    首先须导入JUnit包:所在项目右击->Build Path->Add Libraries->选择JUnit->选择一个版本->Finish 一.手动生成 1.测试方法, ...

  3. java如何使用JUnit进行单元测试

    注:所有内容都是在eclipse上实现,关于eclipse的安装和jdk的安装配置,请看:http://www.cnblogs.com/fench/p/5914827.html 单元测试是什么? 百度 ...

  4. Java单元测试框架 JUnit

    Java单元测试框架 JUnit JUnit是一个Java语言的单元测试框架.它由Kent Beck和Erich Gamma建立,逐渐成为源于KentBeck的sUnit的xUnit家族中为最成功的一 ...

  5. 使用 JUnit 进行单元测试 - 教程

    tanyuanji@126.com 版本历史 JUnit 该教程主要讲解 JUnit 4.x 版本的使用,以及如何在Eclipse IDE 中如何使用JUnit   目录 tanyuanji@126. ...

  6. JUnit & JMockit单元测试

    JUnit&JMockit单元测试总结 1.JUnit简介 Java单元测试框架业内应用较多的是JUnit,它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的 ...

  7. Maven的安装配置及初次创建项目与java单元测试工具JUnit

    Maven  安装     1.把maven安装包解压到某个位置     2.配置M2_HOME环境变量指向这个位置 3.在path环境变量中添加;%M2_HOME%\bin 配置镜像 国内的阿里云镜 ...

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

    Java单元测试工具:JUnit4(一)--概述及简单例子 Java单元测试工具:JUnit4(二)--JUnit使用详解 Java单元测试工具:JUnit4(三)--JUnit详解之运行流程及常用注 ...

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

    微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...

随机推荐

  1. java web 学习十六(JSP指令)

    一.JSP指令简介 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定义了三个指令: pa ...

  2. FastDFS总结

    前言 FastDFS主要解决互联网中小文件存储存储问题,例如图片,短视频,提供上传和下载功能,轻量级的设计,结构非常简单,主要包含三个角色客户端,Tracer服务,Storage服务.Tracer服务 ...

  3. ARM指令集----寻址方式

    ARM指令集可以分为跳转指令,数据处理指令,程序状态寄存器传输指令,LOAD/Store指令,协处理器指令和异常中断产生指令6类 ARM指令集的寻址方式 数据处理指令的操作数的寻址方式 字以及无符号字 ...

  4. Ajax异步请求PHP数据

    来源:http://www.ido321.com/1138.html 接到了老师的一个作业,实现的布局如图: 如果输入了科室ID,科室名字只显示与ID对应的,若没有输入,则显示全部,然后根据I科室名字 ...

  5. VS20xx下项目开发目录管理方法

    在VS20XX之后项目管理使用解决方案(solution)管理一个大的开发工程中多个项目(Project). 以下目录配置与工程名称无关,适用于一般的工程组织过程. 对于一般的生成可执行程序的工程,使 ...

  6. 【转】Maven实战(五)---两个war包的调用

    原博文出自于: http://blog.csdn.net/liutengteng130/article/details/42879803    感谢! 开篇前提   1.为什么要用两个war包的调用? ...

  7. WebService学习之四:关于JAX-WS 注释

    基于 XML 的 Web Service 的 Java API"(JAX-WS)通过使用注释来指定与 Web Service 实现相关联的元数据以及简化 Web Service 的开发.注释 ...

  8. ubuntu下修改时区

    使用一个虚拟机服务,其时区设置的为格林兰标准时区,我北京时区在东八区,较其快八个小时. 修改时区需要执行 tzselect 一步步选择下来,注意确认后的information Therefore TZ ...

  9. HDU 4463 Outlets (最小生成树)

    题意:给定n个点坐标,并且两个点已经连接,但是其他的都没有连接,但是要找出一条最短的路走过所有的点,并且路线最短. 析:这个想仔细想想,就是应该是最小生成树,把所有两点都可以连接的当作边,然后按最小生 ...

  10. [一]Head First设计模式之【策略模式】(鸭子设计的优化历程)

    public abstract class Duck { FlyBehavior flyBehavior; QuackBehavior quackBehavior; public Duck() { } ...