14

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<?>であり、単に正しく機能しません。

これに対する既知の回避策はありますか?

4

2 に答える 2

21

以前、Mockito でこのような問題に遭遇したことがあります。なぜそれが起こるのかはまだわかりません。expect(..) 引数を非ジェネリック クラス型 ala にキャストできます。

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

その後、必要に応じて抑制できる警告が表示されます。非常にエレガントなソリューションではありません。私はそれを見てさらに数分を費やすつもりです。

于 2010-07-15T19:40:51.363 に答える
3

キャストと警告を回避する最も簡単な方法は、expectLastCall()代わりに使用することですexpect(..)(詳細については、同様の質問に対する私の回答を参照してください)。

したがって、この場合:

mockBeanFactory.getType(CLASS_NAME);
expectLastCall().andReturn(SOME_CLASS);
于 2016-02-02T16:42:47.023 に答える