2017-04-13 72 views
0

有没有办法让EasyMock的@TestSubject标识工作,当测试主题对象增强与CGLIB?Easymock与@TestSubject增强与CGLIB

场景:所述@TestSubject对象是一个Spring bean,将其用CGLIB以应用某些方面(假定由于某种原因弹簧不能使用基于JDK的代理)增强。在这种情况下,只需使用@TestSubjectEasyMockSupport.injectMocks(this)并不真正有效。 EasyMock注入了模拟,但是在执行期间,由于CGLIB增强类的内部工作原理,模拟实际上并未被使用。最后,它使用的是对象的原始引用,而不是模拟。

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

回答

0

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