在讨论对方面进行单元测试的技术之前,我要简单讨论错误类型。横切行为分为两个主要部分:行为做什么(我称之为横切功能)和行为用在什么地方(我称之为横切规范)。回到 ATM 的例子,横切功能检查调用者的安全凭证。横切规范检查 ATM 类中每一个公共方法。
为了实现的真正信任度,需要同时检查功能和规范(或者不严格地说,建议和切点)。在完成这个例子的过程中,我将强调给定的测试模式是验证横切功能、规范,还是两者同时验证。
注意我将重点放在测试切点、建议和支持它们的代码上。类型间声明(和其他方面功能)当然是可测试的。我在本文中展示的一些技巧稍加修改就可以对它们使用。它们还有自己的一组技巧,其中许多是很直观的。不过为了节省篇幅,我决定不在本文中明确地讨论它们。
测试模式编目
我将本文写成测试面向方面代码的模式的编目。对于每种模式,我描述了它针对哪种类型的错误,对该模式进行总结,提供一个例子并讨论该模式的优缺点。编目分为四节:
测试完整的单元 :此节展示了测试完整的系统部分(换句话说,同时测试方面和非方面类)的模式。这种技术是在没有使用方面时获得横切行为信任度的惟一方法,并在使用方面时仍然是一种重要的工具。
使用可视化工具 :这里描述的两种模式利用了 AspectJ IDE 对 Eclipse 的支持,也称为 AJDT。严格地讲,使用可视化工具检查应用程序的横切结构不是一种测试技术。不过,它可帮助您理解并获得对应用程序的横切关注点的信任。
使用委派 :此节展示可以帮助将前面提到的两类错误分开的两种模式。通过将一些逻辑从建议中分离到 helper 类中(或者方法中),可以编写与横切规范无关的、检查应用程序横切行为的测试。
使用 mock 目标 :最后一节包括三种模式,它们使用模拟真实建议目标的“mock 目标”类,可以在不将方面集成到真正目标的条件下测试联结点匹配和建议行为。
Highlighter 方面
为了展示这个编目中的样式,我使用了一个实现突出显示搜索术语(即在搜索结果中突出显示用户的查询术语)的方面。我实现了与在上一例子中展示的方面非常相像的一个方面。该系统要在结果汇总页、细节页和应用程序的其他一些地方中突出显示术语。我在本文中展示的这个例子只横切一个类,但是原理是一样的。清单 1 包含 Highlighter 方面的一个实现:
文章来源于领测软件测试网 https://www.ltesting.net/