WEB开发网
开发学院软件开发Java AspectJ 和模仿对象的测试灵活性:用“test-only”... 阅读

AspectJ 和模仿对象的测试灵活性:用“test-only”行为增强单元测试

 2010-03-18 00:00:00 来源:WEB开发网   
核心提示: 有时候情况比碰到状态管理的问题还要糟糕,那就是完全无法实现这种管理,AspectJ 和模仿对象的测试灵活性:用“test-only”行为增强单元测试(6),当您为第三方服务测试客户机代码时,您就可能发现自己处于这种情况下,而且模仿实现允许被测试的类和合作者正确交互的简单验证,我将用一个简单的示例

有时候情况比碰到状态管理的问题还要糟糕,那就是完全无法实现这种管理。当您为第三方服务测试客户机代码时,您就可能发现自己处于这种情况下。只读类型的服务可能不会将改变系统状态的能力公开,或者您可能因为商业原因失去了插入测试数据的信心。举例来说,向活动的处理队列发送测试命令就很可能是个糟糕的想法。

重复的工作

即便您可以完全控制系统状态,基于状态的测试还是可以产生不需要的重复测试工作 ― 而且您不希望第二次编写相同的测试。

让我们将测试应用程序作为示例。如果我控制 CustomerManager EJB 组件,那么我就已经拥有了一个可以验证组件行为正确性的测试。我的客户机代码实际上并不执行任何与向系统添加新的客户相关的逻辑;它只是将操作交给 CustomerManager 。那么,我为什么要在这里重新测试 CustomerManager 呢?

如果某个人改变了 CustomerManager 的实现以使其对相同数据作出不同响应,我就必须修改两个测试,从而跟踪改变。这有一点过耦合测试的味道。幸运的是,这样的重复是不必要的。如果我可以验证 ClientBean 与 CustomerManager 正确通信的话,我就有足够证据证明 ClientBean 是按其工作方式工作的。模仿对象测试恰恰允许您执行这种验证。

模仿对象测试

模仿对象使单元测试不会测试太多内容。模仿对象测试用模仿实现来代替真正的合作者。而且模仿实现允许被测试的类和合作者正确交互的简单验证。我将用一个简单的示例来演示这是如何实现的。

我们测试的代码将从客户机-服务器数据管理系统删除一个对象列表。清单 4 展示了我们要测试的方法:

清单 4. 一个测试方法

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:AspectJ 模仿 对象

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接