快速业务通道

Java开源测试工具JUnit简介 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
,以使其能够运行许多不同的测试。当测试调用者不必关心其运行的是一个或多个测试案例时,这个问题便能够轻松地解决。能够在该情况下度过难关的一个流行模式就是Composite(组合)。摘引其意图,“将对象组合成树形结构以表示‘部分-整体’的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。”在这里‘部分-整体’的层次结构是让人感兴趣的地方。我们想支持能够层层相套的测试套件。

Composite引入如下的参与者:

· Component:声明我们想要使用的接口,来与我们的测试进行交互。

· Composite:实现该接口并维护一个测试的集合。

· Leaf:代表composite中的一个测试案例,其符合Component接口。

该模式告诉我们要引入一个抽象类,来为单独的对象和composite对象定义公共的接口。这个类的基本意图就是定义一个接口。在Java中应用Composite时,我们更倾向于定义一个接口,而非抽象类。使用接口避免了将JUnit提交成一个具体的基类来用于测试。所必需的是这些测试要符合这个接口。因此我们对模式的描述进行变通,并引入一个Test接口:

public interface Test { public abstract void run(TestResult result); }

TestCase对应着Composite中的一个Leaf,并且实现了我们上面所看到的这个接口。

下面,我们引入参与者Composite。我们将其取名为TestSuit(测试套件)类。TestSuit在一个Vector中保存了其子测试(child test):

public class TestSuite implements Test { private Vector fTests= new Vector(); }

run()方法对其子成员进行委托(delegate):

public void run(TestResult result) { for (Enumeration e= fTests.elements(); e.hasMoreElements(); ) { Test test= (Test)e.nextElement(); test.run(result); } }

Java开源测试工具JUnit简介 - 编程入门网

图5 TestSuit应用Composite

最后,客户必须能将测试添加到一个套件中,它们将使用addTest方法来这样做:

public void addTest(Test test) { fTests.addElement(test); }

注意所有上面的代码是如何仅对Test接口进行依赖的。由于TestCase和TestSuit两者都符合Test接口,我们可以递归地将测试套件再组合成套件。所有开发者都能够创建他们自己的TestSuit。我们可创建一个组合了这些套件的TestSuit来运行它们所有的。

Java开源测试工具JUnit简介(7)

时间:2011-01-01 cn-java 李巍

下面是一个创建TestSuit的示例:

public static Test suite() { TestSuite suite= new TestSuite(); suite.addTest(new MoneyTest("testMoneyEquals")); suite.addTest(new MoneyTest("testSimpleAdd")); }

这会很好地工作,但它需要我们手动地将所有测试添加到一个套件中。早期的JUnit采用者告诉我们这样是愚蠢的。只要你编写一个新的测试案例,你就必须记着要将其添加到一个static的suit()方法中,否则其将不会运行。我们添加了一个TestSuit的便捷构造方法,该构造方法将测试案例类作为一个参数。其意图是提取(extract)测试方法,并创建一个包含这些测试方法的套件。测试方法必须遵循的简单的约定是,以前缀“test”开头且不带参数。便捷构造方法就使用该约定,通过使用反射发现测试方法来构造测试对象。使用该构造方法,以上代码将会简化为:

public static Test suite() { return new TestSuite(MoneyTest.class); }

当你只是想运行测试案例的一个子集时,则最初的方式将依然有用。

3.6 总结

现在我们位于JUnit走马观花的最后。通过模式的角度来阐述JUnit的设计,可如下图所示。

Java开源测试工具JUnit简介 - 编程入门网

图6 JUnit模式总结

注意TestCase作为框架抽象的中心,其是如何与四个模式进行相关的。成熟的对象设计的描述展示了这种相同的

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