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

看起来像是增加了代码量,但是它恰恰帮你减少了后期测试排错的时间,每个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. 自定义控件:抽屉SlidingDrawer——wrap_content非全屏

    android:allowSingleTap   指示抽屉是否可以打开/通过手柄上的一个水龙头关闭. android:animateOnClick  表示所述抽屉是否应该打开/与当用户点击手柄动画关闭 ...

  2. 【LR】关于宽带与比特之间的关系

    1.比特=bps 2M比特的意思是2宽带 1M宽带=12M比特=1*1024K比特=1*1024*1024比特=1057648比特 2M宽带=2*1024*1024比特=2097152比特 4M宽带= ...

  3. android studio 中获取sha1

    使用keytool 一.配置环境变量 由于要用到keytool工具,而keytool是jdk里的一个工具,首先将jdk/bin所在的目录加到环境变量的PATH中 看我的keytool所在位置 将所在路 ...

  4. Ubuntu中、英文环境设置

    改变ubuntu的中英文显示需要修改文件/etc/default/locale,具体设置过程为: 1.打开/etc/default/locale文件 #sudo vim /etc/default/lo ...

  5. fork之后发生了什么(基于3.16-rc4)

    在linux c编程中,我们可以使用fork,vfork,clone三个系统调用来创建子进程.下面我们先分析下fork系统调用的实现原理.代码如下(kernel/fork.c): #ifdef __A ...

  6. leetcode@ [343] Integer Break (Math & Dynamic Programming)

    https://leetcode.com/problems/integer-break/ Given a positive integer n, break it into the sum of at ...

  7. SRM DIV1 500pt DP

    SRM 501 DIV1 500pt SRM 502 DIV1 500pt SRM 508 DIV1 500pt SRM 509 DIV1 500pt SRM 511 DIV1 500pt SRM 5 ...

  8. Spark SQL概念学习系列之SQL on Spark的简介(三)

    AMPLab 将大数据分析负载分为三大类型:批量数据处理.交互式查询.实时流处理.而其中很重要的一环便是交互式查询. 大数据分析栈中需要满足用户 ad-hoc.reporting. iterative ...

  9. 应用Java泛型和反射导出CSV文件

    项目中有需求要把数据导出为CSV文件,因为不同的类有不同的属性,为了代码简单,应用Java的泛型和反射,写了一个函数,完成导出功能. public <T> void saveFile(Li ...

  10. 精通Linux的“kill”命令

    无论你使用哪种操作系统,你一定会遇到某个行为失常的应用,它把自己锁死并拒绝关闭.在Linux(还有Mac),你可以用一个"kill"命令强制终结它.在这个教程中,我们将展示给你多种 ...