使用CGLIB增强了@TestSubject的Easymock

时间:2017-04-13 12:14:27

标签: easymock cglib

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

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

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

1 个答案:

答案 0 :(得分:0)

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