快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
处的assert已经改为assertTrue。)

AssertionFailedError不应该由客户(TestCase中的一个测试方法)来负责捕获,而应该由Template Method内部的TestCase.run()来负责。因此我们将AssertionFailedError派生自Error。

public class AssertionFailedError extends Error {   public AssertionFailedError () {} }

在TestResult中收集错误的方法可如下所示:

public synchronized void addError(Test test, Throwable t) {   fErrors.addElement(new TestFailure(test, t)); } public synchronized void addFailure(Test test, Throwable t) {   fFailures.addElement(new TestFailure(test, t)); }

TestFailure是一个小的框架内部帮助类(helper class),其将失败的测试和为后续报告发送信号的异常绑定在一起。

public class TestFailure extends Object {   protected Test fFailedTest;   protected Throwable fThrownException; }

规范形式的Collecting parameter模式要求我们将Collecting parameter传递给每一个方法。如果我们遵循该建议,每一个测试方法都将需要TestResult的参数。其将会造成这些方法签名(signature)的“污染”。使用异常来发送失败可以作为一个友善的副作用,使我们能够避免这种签名的污染。一个测试案例方法,或一个其所调用的帮助方法(helper method),可在不必知道TestResult的情况下抛出一个异常。作为一个进修材料,这里给出一个简单的测试方法,其来自于我们MoneyTest套件(【译者注】请参见JUnit发布版本中附带的另外一篇文章JUnit Test Infected: Programmers Love Writing Tests)。其演示了一个测试方法是如何不必知道任何关于TestResult的信息的。

public void testMoneyEquals() {   assert(!f12CHF.equals(null));   assertEquals(f12CHF, f12CHF);   assertEquals(f12CHF, new Money(12, "CHF"));   assert(!f12CHF.equals(f14CHF)); }(【译者注】由于与JDK中的关键字assert冲突,在最新的JUnit发布版本中此处的assert已经改为assertTrue。)

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

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

JUnit提出了关于TestResult的不同实现。其缺省实现是对失败和错误的数目进行计数并收集结果。TextTestResult收集结果并以一种文本的形式来表达它们。最后,JUnit Test Runner的图形版本则使用UITestResult来更新图形化的测试状态。

TestResult是框架的一个扩展点(extension point)。客户能够自定义它们的TestResult类,例如HTMLTestResult可将结果上报为一个HTML文档。  3.4 不愚蠢的子类-再论TestCase

我们已经应用Command来表现一个测试。Command依赖于一个单独的像execute()这样的方法(在TestCase中称为run())来对其进行调用。这个简单接口允许我们能够通过相同的接口来调用一个command的不同实现。

我们需要一个接口对我们的测试进行一般性地运行。然而,所有的测试案例都被实现为相同类的不同方法。这避免了不必要的类扩散(proliferation of classes)。一个给定的测试案例类(test case class)可以实现许多不同的方法,每一个方法定义了一个单独的测试案例(test case)。每一个测试案例都有一个描述性的名称,如testMoneyEquals或testMoneyAdd。测试案例并不符合简单的command接口。相同Command类的不同实例需要与不同的方法来被调用。因此我们下面的问题就是,使所有测试案例从测试调用者的角度上看都是相同的。

回顾当前可用的设计模式所涉及的问题,Adapter(适配器)模式便映入脑海。Adapter具有以下意图“将一个类的接口转换成客户希望的另外一个接口”。这听起来非常适合。Adapter告诉我们不同的这样去做

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