快速业务通道

扩展JUnit4以促进测试驱动开发 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14

下面我们来描述一下对 JUnit4 扩展的实现。扩展包括 4 个模块,Annotation 定义、用户查询条件 封装、过滤器定义、核心类定义。

JUnit4 用 Annotation 来定义测试用例运行时的属性。我们可以定义自己的 Annotation 库。通过定 义出具体项目中和执行测试用例相关的属性元数据, 比如某个模块,某个特性,将这些属性通过 Annotation 附加到测试用例中,在扩展的 Runner 中利用过滤器对测试用例进行过滤,从而执行目标测 试用例。

根据实际项目中的开发经验,我们大体抽象出了如下的几种 Annotation, 可以映射到我们项目的业务 功能划分上;

表 1. 扩展的 Annotation 的具体用法

名称 参数 作用域
Product 字符串参数,指定要测试的产品项目名称
Release 字符串参数,指定具体的 Release 编号 类、方法
Component 字符串参数,指定子模块、子系统
Feature 字符串参数,指定某个具体的功能、需求 类、方法
Defect 字符串参数,指定测试中发现的 Defect 的编号 类、方法
UseCaseID 字符串参数,指定 UseCase 的编号 类、方法

扩展JUnit4以促进测试驱动开发(3)

时间:2011-10-02 ibm 左超

当我们想要运行所有和 Feature 相关的测试用例时,我们只要指定执行条件,就可以只运行那部分测 试用例,而不会去运行全部的测试用例。这种方法从业务的角度来看,更加具有针对性,而且简洁快速, 比用传统的通过 TestSuite 指定测试用例的方式更加适合测试驱动开发的场景。下面给出 Feature Annotation 和 Release Annotation 的定义作为示例。

清单 1:Feature Annotation 的定义

@Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) public @interface Feature {    String value(); }

清单 2:Release Annotation 的定义

@Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) public @interface Release {    String value(); }

接下来是封装用户输入的执行条件。在这里我们约定用户输入的执行条件的格式是:“条件 A = 值 A ,条件 B = 值 B”。比如用户想执行 Release A 中的跟 Feature B 相关的测试用例和方法,那么用户 的输入条件可以定义为“Release=A,Feature=B”。下图是封装用户输入的类的结构:

图 3. 封装用户输入的执行条件的类

过滤器是用来根据用户输入,对目标测试用例和测试方法进行过滤,从而找到符合条件的测试用例方 法。用户输入的每个条件都会生出相应的一个过滤器,只有测试用例满足过滤器链中所有的过滤条件,测 试用例才能被执行。下面的清单展示了过滤器接口的定义和过滤器工厂的核心实现。过滤器工厂会根据用 户输入的条件来创建对应的过滤器。

扩展JUnit4以促进测试驱动开发(4)

时间:2011-10-02 ibm 左超

清单 3 . Filter 接口的定义

public interface Filter {    public boolean shouldRun(IntentionObject object); }

清单 4 . FilterFactory 的部分实现

public class FilterFactory {    public static Map<Class<?>, List<Filter>> createFilters (String intention)    throws ClassNotFoundEx

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号