使用Grester简化Java应用程序的JUnit测试

Grester 是一种针对 Jester 的 Apache Maven 包装器,用于检查未采用测试驱动方式编写的代码

Jester 由 Ivan Moore 编写,它是测试由程序员和开发人员编写的单元测试的优秀工具。该工具基于这样一个假设:代码中的很多区域包含了条件语句、循环语句和 case 语句,并且在一些代码区域中,类的圈复杂度(cyclomatic complexity)由于存在很多执行路径而会突然增加。Jester 主要关注的就是类似这样的代码。但是要运行它,必须使用指向各个资源的格式良好的类路径。

Grester 是针对 Jester 的 Apache Maven 包装器,它减轻了从项目依赖关系构造 Java 类路径之类的麻烦,这样您可以使用 Jester 更轻松地测试执行点。Grester 还增强了使用 Maven 的一些优点,Maven 是其基础架构的核心。在对没有使用测试驱动方式编写的代码进行额外检查时,Jester 尤为有用。此类代码可以是旧式应用程序中的遗留代码,甚至还可以是最近编写的代码,这些代码的开发人员认为使用 Agile 的测试驱动方法指导构建高质量代码来说难度较大。

实际上,您可以使用 Grester 来突破使用非测试驱动方式编写代码的限制。根据我的经验,范围蔓延(scope creep)和可能错失或绕过实际业务函数的代码将会增加错误数和恶意代码 数量(快速处理 blob 反模式,即使在很小的代码段中,都不必作为单个难于管理的模块或模块集)。

本文不会探讨解释 Jester 的输出及精确说明 Jester 如何工作的技术细节。本文旨在探讨获取并围绕 Jester 使用 Maven 插件包装器。

获取 Grester

运行 Grester 所需的基础设施非常少:您只需要使用 Maven 就能构建和使用 Grester。Grester 是用 Groovy 编写的,Groovy 是一种动态语言,它的语法类似于 Java 并且拥有 Python 和 Ruby 等语言的优点。Grester 本质上只是用于快速运行 Jester 工具的另一个 Maven 插件,因此 Grester 的真正威力来自 Jester。在本文中,结合使用了 Jester V1.37 与 Grester V0.3 alpha 发行版。

Jester 打破常规:为什么呢?

如果所有项目 Java Archive (JAR) 依赖关系都位于一个位置,那么直接运行 Jester 不可能比在 Java 类路径条目中引用单个路径更简单。但是,当依赖关系散布到整个文件系统中时,每次 Jester 运行的配置问题会十分复杂而讨厌,尤其是在各个依赖关系随时间改变位置时。使用 Maven 将显著简化此过程。

Jester 运行在 Maven 项目构建配置以外的每个实例中。那么,Grester 的特别之处在哪里?答案在于 Maven 组织其依赖关系的方式。这种 “安排” 非常高效,Maven 不但尝试把 Java(或 Groovy)JAR 和 Web 归档 (WAR) 的查找方式标准化,而且还尝试把保存方式标准化。

Linux 和 UNIX 用户注意
Grester 的文件大小非常小,并且在解压缩后,您可以放心地删除目前的压缩归档。这里是在 Windows 计算机中使用 Cygwin 来说明解压缩它是多么简单 —— 甚至在模拟的 Linux 环境中也一样。但是,不建议用早于 Grester 0.3 的版本在 Linux 或 UNIX 系统上试验,因为虽然 Windows alpha 版本非常稳定,但是缺少一些操作系统功能。不过,在所有版本中,都使用 Jester V1.37。

如果您不熟悉 Maven,请使用系统库 的概念。有一个位于 $USER_HOME\.m2\repository 的默认本地系统库,还有一个在位于 $MAVEN_HOME/conf 的 pom.xml 或 settings.xml 文件中配置的远程系统库。

安装 Grester

获取 TAR 压缩资源(.tar 文件和 tar.gz 文件适用于 UNIX 和 Linux)或者 Microsoft Windows ZIP 文件后,请将其解压缩。有很多种方法可以完成此操作:在这里,我使用 Windows 中的 Cygwin 实用程序。

图 1. 用 Windows 中的 Cygwin 实用程序解压缩 Grester

时间: 2024-10-06 10:21:45

使用Grester简化Java应用程序的JUnit测试的相关文章

Java应用程序开箱即用的对象持久性

Simple Persistence for Java是一个开源的对象关系型持久性库,它使用定制查询语言以及内建数据库支持来简化 Java 应用程序中的对象持久性.在本文中,软件架构师 Sami Salkosuo 介绍了该库,并带您领略解决对象持久性的零管理以及零配置方法. 对象持久性几乎是所有 Java 应用程序(从桌面应用程序到企业级应用程序)中的必备.持久性的缺点是它一直都不太简单.但这一情况已在最近一版的 Simple Persistence for Java(一个开源的对象关系型持久性

使用Install Anywhere让您的Java安装程序更高效和灵活

本文将介绍如何借助 Install Anywhere 更好地规划和设计 Java 安装程序,提供多平台多操作系统的部署,定义更灵 活的安装流程和环境检查,开发更加友好和美观的用户交互界面.文章主要面向 Java 软件安装程序开发人员,假定您对 Java 以及 Ant 开发有基本的了解,您也可以参见参考资料以了解更多 Install Anywhere 相关的知识. Install Anywhere 介绍 Install Anywhere 概述 Install Anywhere(以下简称 IA)是由

使用Acegi保护Java应用程序,第2部分: 使用LDAP目录服务器

使用 ApacheDS 和 Acegi 实现访问控制 了解了 Acegi 安全系统(Acegi Security System)的 基础知识 后,我们 将介绍该系统的更加高级的应用.在本文中,Bilal Siddiqui 向您展示了如何 结合使用 Acegi 和一个 LDAP 目录服务器,实现灵活的具有高性能的 Java 应用程序的安全性.还将了解如何编写访问控制策略并将其存储在 ApacheDS 中,然后配置 Acegi 使其与目录服务器交互,从而实现身份验证和授 权的目的. 这期共分三部分的

在NetBeans IDE 6.0中开发通用Java应用程序简介

本简明教程将演示如何在 NetBeans IDE 6.0 中开发 Java SE 应用程序.本教程假定您对 Java 应用程序的开发已比较熟悉.在讲解过程中,我们将演示如何通过一些 IDE 特性简化应用程序开发. 我们将开发一个单词转换应用程序,用于将多个英文单词转换为一个英文单词.生成单词的构成形式为第一个词的第一个字母.第二个词的第二个字母.第三个词的第三个字母,依此类推.该生成词称为 离合词. 建立项目 我们创建的应用程序将包含两个项目: 具有实用程序类的 java 库项目. 具有 mai

《Spring实战(第4版)》——第1章 Spring之旅 1.1简化Java开发

第1部分 Spring的核心 Spring可以做很多事情,它为企业级开发提供给了丰富的功能,但是这些功能的底层都依赖于它的两个核心特性,也就是依赖注入(dependency injection,DI)和面向切面编程(aspect-oriented programming,AOP). 作为本书的开始,在第1章"Spring之旅"中,我将快速介绍一下Spring框架,包括Spring DI和AOP的概况,以及它们是如何帮助读者解耦应用组件的. 在第2章"装配Bean"中

新措施:Java手机程序测试费用将降50%

6月3日消息,据国外媒体报道,Sun.Orange.沃达丰集团以及索尼爱立信移动通信正采取措施使Java手机程序开发更简单和便宜. 一年一度JavaOne开发者大会周二在旧金山举行,大会发布了新开源测试工具并宣布正在改善Java认证计划以加强认证Java ME手机程序.其目标是:简化该流程,减少软件开发商不得不为不同款式手机所做的测试数量. Orange合作伙伴计划技术总监Martin Wrigley在发布会上说:"没人喜欢测试."他表示,随着移动 应用市场的成熟,更多的测试开发人员会

云计算在企业级Java应用程序上的影响

围绕云计算而展开的炒作是否会有结束的那一天?现在的媒体每天都会发表新的新闻稿对一些以前从未听过的PaaS提供商所提供的卓越服务进行吹捧,或者对某篇文章或研究拼命进行鼓吹,假如我们取消了我们的数据中心并灌输自己成为IaaS教会或者SaaS圣殿赞助人,那么我们都会把这令人难以置信的好处当成享受并节约成本.但是,把所有的炒作放在一边,也不说确实有利用基于云的技术来实现的实实在在的利益,但问题是:向云计算转变是如何影响典型的构建企业Java应用程序开发者的? 乍一看,人们可能会断言,基于云计算技术的出现

云计算如何影响企业级Java应用程序开发者

媒体围绕云计算的炒作会不会有结束的一天?每天都有新的新闻稿吹捧一些以前陌生的PaaS提供商提供的卓越服务,或某篇文章或研究出来鼓吹,如果我们取消我们的数据中心并灌输自己成为IaaS教会或SaaS圣殿赞助人,我们都会享受令人难以置信的 好处并节约成本. 但是,把所 有的炒作放在一边,也不说确实有利用基于云的技术来实现的实实在在的利益,但问题是:向云计算 转变是如何影响典型的构建企业Javahttp://www.aliyun.com/zixun/aggregation/13521.html">

windows 7-运行一个基于Java的程序总是要求管理员权限怎么办?

问题描述 运行一个基于Java的程序总是要求管理员权限怎么办? #我的操作系统是windows 7. 安装了一个叫**Geogebra**的几何作图软件.这个软件是用Java开发的开源软件. 之前使用一直是正常的,最近一段时候,突然发生了一系列的怪事: 比如一直用的Acrobat突然失效了,后来只好重新安装,用amtlib解决. 再就是重装Acrobat之后就偶然发现Geogebra不用管理员权限无法打开了,即使彻底卸载,清除注册表项,重新安装也没用:还尝试了它的portable版本,也是一样.