基于JUnit的单元测试技术


Part 1 概述及相关概念


敏捷开发与测试

敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方式开发软件。
在项目初期,把一个大项目分为多个相互联系但也可独立运行的小项目,并分别完成。
测试和质保(QA)贯穿整个项目周期,一些过程更是提出了“在编写软件之前先编写测试”(测试优先)的概念。

在敏捷开发中,测试是开发的一部分,敏捷开发强调不同层次的自动化测试。
测试金字塔见下图,
越底层的测试,如单元测试,成本更低,效率更高,缺陷更容易定位。越高层的测试,越能反映真实需求。

单元测试

单元测试是对软件基本组成单元/模块进行的测试,又称为模块测试。重点在于发现程序设计或实现的逻辑错误,使问题及早暴露,便于问题的定位解决。

概述

单元测试中多采用白盒测试和黑盒测试相结合的方法,既关注单元功能,又关注程序模块的逻辑结构。
单元测试的内容包括:单元功能测试、模块接口测试、数据流测试、逻辑路径测试等。

单元测试用例设计

每个测试用例应包含4个关键元素:

  • 被测单元模块初始状态声明,即测试用例的开始状态。
  • 被测单元的输入,包括被测单元读入的任何外部数据。
  • 测试用例实际测试的代码。
  • 测试用例的期望输出结果(应在测试进行前在测试说明中定义)。

测试用例设计技术

(1)黑盒测试:使用单元接口和功能描述,不需了解被测单元的内部结构。目的主要是检查功能是否实现或遗漏;检查人机交互是否有错;性能等其他特性要求是否满足等。

(2)白盒测试:使用被测单元内部如何工作的信息。目的主要是保证一个模块中所有的独立路径至少被执行一次;对所有的逻辑值均需要测试真、假两个分支;在上下边界及可操作范围内运行所有循环;检查内部数据结构以确保其有效性。

(3)灰盒测试:借助于源代码和测试工具,通过黑盒和白盒测试相结合的方法进行测试的技术。


Part 2 JUnit


简介

JUnit 是一个Java的单元测试框架
由Kent Beck(极限编程创始人)和Erich Gamma(《设计模式》作者)建立,是xUnit家族中最为成功的一个。

所有的单元测试框架应该遵循3条规则:

  • 每个单元测试必须独立于其他单元测试而运行。
  • 框架必须以单项测试为单位来检测和报告错误。
  • 必须易于定义要运行哪些单元测试。

JUnit 的安装在IDEA环境下很简单,放一个链接 IDEA的 JUnit 的安装与运用

用 JUnit 编写测试代码

JUnit 在4.0版本之前和之后发生了很大改动,技术上从新不从旧,这部分主要对 JUnit 4.x 版本进行说明。

JUnit 4.x 框架相对于 JUnit 3.x 而言,
最明显的特性是引入JDK 1.5后的annotation(注解),
使得定义测试用例及方法不像 JUnit 3.x 一样死板。

  • JUnit 4.x 中任意一个(有声明测试方法的)普通类都可以当做测试用例,而不再要求测试用例一定要继承TestCase类。
  • 声明测试方法时,不再要求测试方法的名称一定要用“test”开头,而是用注解 @Test 来声明。
  • 同理,还有注解 @Before 和 @After, @BeforeClass 和 @AfterClass。
  • 测试用例中,相关方法的执行顺序为:@BeforeClass → @Before → @Test → @After → @Before → @Test →@After → @AfterClass

@Before 方法进行一些固件的准备工作。 @After 方法进行一些固件的善后工作。
@BeforeClass 方法在所有的测试方法运行之前调用的一个方法,进行一些开销高昂的初始化操作如:连接数据库,它的方法必须是static的。 @AfterClass 方法在所有的测试方法运行之后调用的一个方法,如:关闭数据库连接,它的方法也必须是static的。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值