当使用CGLIB增强测试主题对象时,有没有办法让EasyMock的@TestSubject
声明工作?
场景:@TestSubject
对象是一个使用CGLIB增强的Spring bean,以便应用某些方面(假设由于某种原因,Spring无法使用基于JDK的代理)。在这种情况下,仅使用@TestSubject
和EasyMockSupport.injectMocks(this)
并不真正有用。 EasyMock注入模拟,但是在执行期间,由于CGLIB增强类的内部工作原理,实际上并未使用模拟。最后,它使用了对象具有的原始引用,而不是模拟。
我知道的唯一方法是在测试主题中创建一个setter,并手动调用mock来调用setter。但有时我没有访问/权限/时间来更改主题代码以包含setter。
答案 0 :(得分:0)
cglib类总是final
什么阻止创建另一个代理。因此,这是不可能的。相反,您需要发现一个类已经是一个cglib代理,而是增强其基类。