如何进行AOP单元测试?

发布于 2024-08-31 00:57:44 字数 46 浏览 4 评论 0原文

我正在使用 Unity 进行 AOP,有人可以告诉我如何对它们进行单元测试吗?

i'm using Unity to do AOP, could someone give me some idea how to unit test them?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦途 2024-09-07 00:57:44

您的“aspect”实现是否是一个实现ICallHandler(或Unity 2.0中非常相似的IInterceptionBehavior)的类,并且已经添加到被拦截对象的执行管道中?

如果是这样,您可以非常普通地单独测试它。您测试的是 Invoke 方法 - 使用为 IMethodInitation 创建的模拟来调用它,在调用方面之前设置为具有对象的状态并使用 GetNextHandlerDelegate设置模拟对象来表示您拦截的对象调用。

然后,您可以

  • 在您的委托目标上断言:如果合适的话
    进行调用 - 即测试是否
    方面打破/不打破
    执行是否正常,是否调用
    参数已正确更改等
  • Invoke 的结果上的 (IMethodReturn
    对象) - 即测试是否
    返回结果已正确更改,
    是否抛出异常等

Does your "aspect" implementation is a class that implements ICallHandler (or very similar IInterceptionBehavior in Unity 2.0) and is already added to intercepted object's execution pipeline?

If so, you can test it separately quite ordinarily. What you test is Invoke method - call it with mock created for IMethodInvocation, set up to have your object's state before invoking the aspect and with GetNextHandlerDelegate to mock object set up to represent your intercepted object call.

You can then assert:

  • on your delegate target if proper
    calls are made - i.e. test whether
    the aspect breks/doesn't break the
    execution properly, whether the call
    arguments were properly altered etc.
  • on Invoke's result (IMethodReturn
    object) - i.e. test whether the
    return result was properly altered,
    whether the exception was thrown etc.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文