AOP@Work: 设计切入点来避免模式密集 - 编程入门网
estContext>();
/** Clients call this to get test context */
public static TestContext getTestContext(Object test) {
...
}
...
}
方法 getTestContext(Object test) 可支持结果收集器和测试之间的不同联 系(每个测试、每个套件、每个线程、每个 VM),但 TestContext 的子类型需 要向下强制转换,不支持其他类型。 展开测试 抛出异常不仅要展开测试,还将报告错误。如果测试客户机直接使用 getTestContext(..) 通知错误,那么需要展开测试而不是报告更多的错误。为此 ,需要声明一个专门的异常类,指出已经告知结果。API 契约方式需要定义抛出 异常的客户机和捕捉异常的装置都需要知道的类。为了向客户机隐藏类型细节, 可以像下面这样声明一个返回用户抛出的异常的方法:
然后测试抛出 TestContext 定义的所有异常:
这样就把测试和 TestContext 绑定到了一起,但是 safeUnwind() 仅供那些 进行自己的结果报告的测试使用。 AOP@Work: 设计切入点来避免模式密集(8)时间:2011-09-04 IBM Wes Isberg保证异常被报告 下面是为 TestContext 收集结果的通知。这个通知具有足够的通用性,可用 于不同的测试用例和不同的 TestContext 子类型:
因为该通知加强了 TestContext 的不变性,所以我把这个方面嵌套在 TestContext 中。为了让装置开发人员指定不同的测试用例,切入点和方法都是 抽象的。比如,下面将其用于 TestCase:
我在一个重要的地方限制了这一解决方案:around 通知声明它返回 void。如 果我声明该通知返回 Object,就可以在任何连接点上使用该通知。但是因为要捕 获异常需要正常返回,我还需要知道返回的是什么 Object。我可以返回 null 然 后等待好消息,但我更愿意向任何子方面表明该问题,而不是等它在运行时抛出 NullPointerException。 虽然声明 void 限制了 testCase() 切入点的应用范围,但是这样降低了复杂 性,增强了安全性。 AspectJ 中的通知具有和 Java 语言中的方法相同的类型安 全和异常检查。通知可以声明它抛出了一个经过检查的异常,如果切入点选择了 不抛出异常的连接点,那么 AspectJ 将报告错误。类似地,around 通知可以声 明一个返回值( |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |