簡體   English   中英

如何EasyMock調用返回通配符泛型的方法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM