【问题标题】:Easymock with @TestSubject enhanced with CGLIB使用 CGLIB 增强的 @TestSubject 的 Easymock
【发布时间】:2017-04-13 12:14:26
【问题描述】:

当使用 CGLIB 增强测试主题对象时,有没有办法让 EasyMock 的 @TestSubject 注释起作用?

场景:@TestSubject 对象是一个 Spring bean,它使用 CGLIB 进行了增强,以便应用某些方面(假设由于某种原因 Spring 不能使用基于 JDK 的代理)。在这种情况下,简单地使用@TestSubjectEasyMockSupport.injectMocks(this) 并不能真正起作用。 EasyMock 注入了模拟,但是在执行期间模拟实际上并没有被使用,因为 CGLIB 增强类的内部是如何工作的。最后,它使用对象的原始引用,而不是模拟。

我知道的唯一方法是在测试对象中创建一个设置器,并手动调用设置器注入模拟。但是有时我没有访问/权限/时间来更改主题代码以包含设置器。

【问题讨论】:

    标签: easymock cglib


    【解决方案1】:

    cglib 类总是final 阻止创建另一个代理。因此这是不可能的。相反,您需要发现一个类已经是一个 cglib 代理,而是增强它的基类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-07
      相关资源
      最近更新 更多