我们正在考虑切换到Spring 3.0,并遇到Spring 3.0,EasyMock和Java Generics的交叉问题。

在一处,我们模拟了Spring 3.0 AbstractBeanFactory,特别是此方法:

public Class<?> getType(String name) throws NoSuchBeanDefinitionException { ... }

在Spring的早期版本中,这返回一个非泛型,一切都很好。但是,使用泛型时,我们遇到了麻烦:
expect(mockBeanFactory.getType(CLASS_NAME)).andReturn(SOME_CLASS);

因为getType返回Class<?>,所以andReturn需要Class<?>作为参数,这根本无法正常工作。

有已知的解决方法吗?

最佳答案

我之前遇到过Mockito这样的问题。我不确定为什么会这样。您可以将Expect(..)参数转换为非泛型类类型ala

expect((Class) mockBeanFactory.getType(CLASS_NAME)).andReturn(SOME_CLASS);

然后,您将得到一个警告,可以根据需要取消显示。这不是一个非常优雅的解决方案;我将花更多时间看一下。

07-24 09:54
查看更多