我们正在考虑切换到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<?>
作为参数,而这种参数无法正常运行。
这是否有一个已知的解决方法?
答案 0 :(得分:21)
我之前遇到过像Mockito这样的问题。我不确定它为什么会发生。您可以将expect(..)参数强制转换为非泛型类类型ala
expect((Class) mockBeanFactory.getType(CLASS_NAME)).andReturn(SOME_CLASS);
然后你会发出一个警告,你可以根据需要进行压制。不是很优雅的解决方案;我会花几分钟时间看一下。
答案 1 :(得分:3)
避免任何播放和警告的最简单方法是使用Appearing
而不是expectLastCall()
(有关详细信息,请参阅my answer to a similar question)。
所以在这种情况下:
expect(..)