[英]How to EasyMock a call to a method that returns a wildcarded generic?
我們正在考慮切換到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);
然后你就會有一個警告,你可以根據需要進行壓制。 不是很優雅的解決方案; 我要花幾分鍾時間看一下。
避免任何強制轉換和警告的最簡單方法是使用expectLastCall()
而不是expect(..)
(有關詳細信息,請參閱我對類似問題的回答 )。
所以在這種情況下:
mockBeanFactory.getType(CLASS_NAME);
expectLastCall().andReturn(SOME_CLASS);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.