zoukankan      html  css  js  c++  java
  • 单元测试及Junit 4.x Java单元测试框架

    1. 单元测试

    1.1. 单元测试概念

    单元测试是对软件基本组成单元的测试。

    在传统的结构化编程语言如C语言中,单元一般是模块,也就是函数或子过程;

    在象C++中, 单元是类或类的方法;

    Ada语言中,单元可为独立的过程、函数或Ada包;

    在第四代语言(4GL)中,单元对应为一个菜单或显示界面。

    多个被测模块之间的单元测试可同时进行,以提高单元测试效率。

    单元测试一般应该由编程人员完成,有时测试人员也加入进来,但编程人员仍会起到主要作用。

    单元测试的依据是软件的详细设计描述、源程序清单、编码标准等。

    1.2. 单元测试目的

    验证代码能否达到详细设计的预期要求。

    发现代码中不符合编码规范的地方。

    准确定位发现的错误,以便排除错误。

    1.3. 单元测试的优点

    由于单元测试是在编码过程中进行的,若发现了一个错误,不管是从做回归测试的角度,还是对错误原因理解的深刻性的角度,修复错误的成本远小于集成测试阶段,更是小于系统测试阶段。

    在编码的过程中考虑单元测试问题,有助于编程人员养成良好的编程习惯,提高源代码质量。

    1.4. 单元测试的测试方法

    Java junit测试

    Python unittest测试 ---白盒测试

    在单元测试阶段,应使用白盒测试方法和黑盒测试方法对被测单元进行测试,其中以使用白盒方法为主。

    在单元测试阶段以使用白盒测试方法为主,是指在单元测试阶段,白盒测试消耗的时间、人力、物力等成本一般会大于黑盒测试的成本。

    1.5. 单元测试的步骤

    单元测试的实施应遵循一定的步骤,力争做到有计划、可重用。

    单元测试的步骤如下:

    ① 计划单元测试

    ② 设计单元测试

    ③ 实现单元测试

    ④ 执行单元测试

    ⑤ 单元测试结果分析并提交测试报告

    1.6. 单元测试的环境构成

    在单元测试时,如果模块不是独立的程序,需要辅助测试模块,有两种辅助模块:

    驱动模块(Driver

    桩模块(Stub

     

    1.7. 单元测试环境

    驱动模块(Driver

    用来代替被测单元的上层模块的。驱动模块能接收测试数据,调用被测单元,也就是将数据传递给被测单元,最后打印测试的执行结果。可将驱动模块理解为被测单元的主程序。

    桩模块(Stub又称为存根模块,它用来代替被测单元的子模块。设计桩模块的目的是模拟实现被测单元的接口。桩模块不需要包括子模块的全部功能,但应做少量的数据操作,并打印接口处的信息。

    人们在进行单元测试时尽量避免开发驱动模块和桩模块。尤其应避免开发桩模块,因为驱动模块开发的工作量一般少于桩模块。

    若采用自底向上的方式进行开发,底层的单元先开发并先测试,可以避免开发桩模块,采用这种方法测试上层单元时,也是对下层单元的间接测试,但当下层单元被改动后,则需要执行回归测试判断其上层单元是否需要修改。

    当不得不开发驱动模块及桩模块时,人们力求它们的简单以提高工作效率。但过于简单的驱动模块和桩模块会影响单元测试的有效性,因而,对被测单元的彻底测试有时会被推迟到集成测试阶段完成。

    1.8. 单元测试用例设计

    单元测试的内容

    单元测试的对象是软件设计的最小单位——模块或函数,单元测试的依据是详细设计描述。

     

    2. Junit 4.x——Java单元测试框架

     

    开源的Java测试框架,主要用于白盒测试、回归测试;Junit 4.x 版本中引入了注解(Annotation)来执行单元测试。Eclipse中已经带有Junit4

    2.1. 创建Junit项目

     

     

    2.2. 创建计算器类

     

    2.3. 执行入门JUnit测试

    2.3.1. 创建测试类,编写测试代码

     

     

    2.3.2. 测试通过

     

    2.4. Before After Test标签的应用

    2.4.1. 代码效果

     

    2.4.2. 测试结果

     

    2.5. 断言用法

     

    对于断言,如果断定的正确运行通过,绿条

    如果断定的不正确,红条

    2.6. 其他特殊场景

    2.6.1. 异常预测测试

     

     

    2.6.2. tmeout 超时关闭

    另外一个test 用法,@Test(timeout=毫秒),如果一个方法里有循环,在这里可以设置超时时间,限制它多长时间关闭。  

     

    2.6.2. Ignore注解

     

    2.7. 创建测试组(测试一堆)

     

     

     

     

  • 相关阅读:
    js 数据图表
    yii query builder
    mysql if
    这又是起点
    [cookie篇]从cookie-parser中间件说起
    How to find and fix Bash Shell-shock vulnerability CVE-2014-6271 in unix like system
    AngularJS打印问题
    笔记本上班时间自动静音下班自动打开
    SCP命令
    Installing Ruby 1.9.3 on Ubuntu 12.04 Precise Pengolin (without RVM)
  • 原文地址:https://www.cnblogs.com/llh-ywr/p/12613032.html
Copyright © 2011-2022 走看看