快速业务通道

使用Grester简化Java应用程序的JUnit测试 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-13
本么?答案是 Jester 没有放在可公开获得的已知 Maven 系统库中(例如,Maven 的 Ibiblio),因此您不能用包含 Jester 的远程系统库来配置 Maven 的 $MAVEN_HOME/conf/settings.xml 文件(不考虑用 groupId-artifactId 版本组合安装它的方法)。

因此,分别为 Windows 和 Linux/UNIX 提供了 install-jester.bat 和 install-jester.sh 可执行文件。如果任何一个可执行文件在任意平台上执行失败,都可以使用如下所示的命令作为解决方法。

图 8. 建立 Jester 依赖关系

使用Grester简化Java应用程序的JUnit测试 - 编程入门网

注:我写完这篇文章后,Grester V1.0.1 被发布到 Maven 公共系统库 中。这种持续不断地改进意味着您现在可以直接从著名的 Apache 系统库中获得插件,但是仍然需要有提供结合功能的 Jester 核心 JAR 和指令才能构成完整的架构。

在示例 Maven 项目中使用 Grester

那么,您已经得到了一个精心编织的 Maven 项目,并且希望在单元测试(或者至少在一组测试中)中测试 Jester。无论是单元测试还是集成测试,明智的做法是要么把项目复制到文件系统中的某个位置并对该副本运行 Jester,要么使用现有副本,但是要准备好恢复对代码源文件所做的所有更改。这是因为 Jester 将更改现有的源代码文件,保存更改并重新编译代码(保留同一个目录中的类文件作为源文件)。如果项目拥有的代码库相对较小或者所选测试很少,则可以使用现有代码库副本。

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

时间:2012-03-17 IBM Michael Nyika

在 Eclipse 中设置示例文件

以测试为例,您将使用在 Eclipse IDE 中构造和准备的基本 Maven 项目。图 9 演示了 Eclipse IDE 内的项目。

图 9. Eclipse IDE 中的示例 Maven 项目

使用Grester简化Java应用程序的JUnit测试 - 编程入门网

举例来说,在项目中使用一个相对简单的类和测试类。该类将使用 Java 语言处理外部过程命令的执行。清单 3 显示了测试的类的主要部分。

清单 3. 在 Maven 项目中测试的示例类

package com.prometheus.run; import java.io.IOException; import java.io.InputStream; public class CommandExecutor extends Executor{    ...    public String executeCommand(String command){   ...      try {        Process child = performCommandExecution(command);        stream = child.getInputStream();        sb = processStream(stream);        ...      }        ...      return sb.toString();    }    protected StringBuffer processStream(InputStream stream) throws IOException {       ...       sb = new StringBuffer();      while ((c = stream.read()) != -1) {          sb.append((char)c);          }      return sb;    }    ... }

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

时间:2012-03-17 IBM Michael Nyika

在 CommandExecutor 类中,executeCommand() 方法将调用同一个类 processStream() 中的受保护方法。在 processStream() 方法中,将在 while() 循环中创建一个新 StringBuffer 实例并且处理 InputStream。清单 4 显示了测试类,还显示了测试的主要部分。

清单 4. Maven 项目中的示例测试类

package com.prometheus.run; import com.prometheus.run.CommandExecutor; ... public class CommandExecutorTest extends TestCase {   ...   public class MockProcess extends Process{      ...      public InputStream getInputStream(){        String source= "This is a mock string";        return new ByteArrayI

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号