ユニットテストでSpringがEasyMockモックを注入しようとしています。私は私のテストを実行しようとすると、私はこのスタックトレースを取得Springを使ってEasyMockモックを注入すると、ClassCastExceptionが発生する
@Autowired
@Qualifier("mockService")
private Service service;
public void testGetFoo() {
Foo foo = new Foo();
expect(service.findFoo()).andReturn(foo);
replay(service); // <-- This is line 45, which causes the exception
// Assertions go here...
}
:私のユニットテストで
<bean id="mockService" class="org.easymock.EasyMock" factory-method="createMock" name="MockService">
<constructor-arg index="0" value="my.project.Service"/>
</bean>
私はこれを持っている:私のapplicationContext.xmlをで
は、私はこれを持っています
java.lang.ClassCastException: org.springframework.aop.framework.JdkDynamicAopProxy
at org.easymock.EasyMock.getControl(EasyMock.java:1330)
at org.easymock.EasyMock.replay(EasyMock.java:1279)
at TestFooBar.testGetFoo(TestVodServiceLocator.java:45)
私は春とEasyMockの両方に非常に新しいですが、私に電話をしようと、エラーがEasyMockによって引き起こされているように私には思えますそれはEasyMockのインスタンスとみなされていますが、実際にはSpringによって作成された動的なプロキシです。私が理解しているように、動的プロキシはインターフェイスで定義されたメソッドのみを実装します。この場合はServiceのインターフェイスです。
私が理解できないことは、少なくともfrom what I read(here)ですが、私が達成しようとしていることは少なくとも可能であると思われます。
私の質問は:私は何をしていないのですか、何が間違っているのですか?
私は簡単に理解できるように、投稿する前に私の例をやや簡略化しました。 テスト対象のクラスは、その名前に基づいて実行時に特定のBeanをアプリケーションコンテキストから取得することになります。そのBeanをXMLファイルのモックとして定義するのは明らかでした。 まだ、私はあなたの要点を理解しており、あなたは正しいです。私はいくつかのものが混じっていて、あまりにも遠くに行ったと思う。 – KaptajnKold
インテグレーションテストアドバイスの実行や配線を行う場合に便利です。このようにすることができます。トランザクションが正しく適用されているかどうかを確認します。 –