SpringMVCとJUnitは初めてです。基本的に私はサービスクラスを自動配線したいので、このクラスはSpringコンテキストでロードする必要があります。
サービス
@サービス パブリッククラスFundService{ @Autowired FundDAO FundDAO; / ** * @戻る * / public List getFundDetails(String productId){ FundDAO.getFundDetails(productId);を返します。 } }
アプリケーションコンテキスト
<beans>
<mvc:annotation-driven />
<context:component-scan base-package="com.test.*" />
</beans>
JUnitクラス
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"classpath *:/ WEB-INF / application-context.xml"}) パブリッククラスCompensationServiceTest{ @Autowired プライベートFundServicefundService; @テスト public void verifyGetCompensationList() {{ System.out.println(fundService == null); } }
テストの実行中に、次の例外トレースが表示されます
org.springframework.beans.factory.BeanCreationException:「com.test.admin.service.CompensationServiceTest」という名前のBeanの作成中にエラーが発生しました:自動配線された依存関係の挿入に失敗しました。ネストされた例外はorg.springframework.beans.factory.BeanCreationExceptionです:フィールドを自動配線できませんでした:private com.test.admin.service.FundService com.test.admin.service.CompensationServiceTest.fundService; ネストされた例外はorg.springframework.beans.factory.NoSuchBeanDefinitionExceptionです:依存関係に一致するタイプ[com.test.admin.service.FundService]のBeanが見つかりません:この依存関係の自動配線候補として適格な少なくとも1つのBeanが必要です。依存関係のアノテーション:{@ org.springframework.beans.factory.annotation.Autowired(required = true)} org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:286)で org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1064)で org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireBeanProperties(AbstractAutowireCapableBeanFactory.java:374)で org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:110)で org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:75)で org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:333)で org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:220)で org.springframework.test.context.junit4.SpringJUnit4ClassRunner $ 1.runReflectiveCall(SpringJUnit4ClassRunner.java:301)で org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)で org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:303)で org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:240)で org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)で org.junit.runners.ParentRunner $ 3.run(ParentRunner.java:193)で org.junit.runners.ParentRunner $ 1.schedule(ParentRunner.java:52)で org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)で org.junit.runners.ParentRunner.access $ 000(ParentRunner.java:42)で org.junit.runners.ParentRunner $ 2.evaluate(ParentRunner.java:184)で org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)で org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)で org.junit.runners.ParentRunner.run(ParentRunner.java:236)で org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:180)で org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)で org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)で org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)で org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)で org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)で org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)で 原因:org.springframework.beans.factory.BeanCreationException:フィールドを自動配線できませんでした:private com.test.admin.service.FundService com.test.admin.service.CompensationServiceTest.fundService; ネストされた例外はorg.springframework.beans.factory.NoSuchBeanDefinitionExceptionです:依存関係に一致するタイプ[com.test.admin.service.FundService]のBeanが見つかりません:この依存関係の自動配線候補として適格な少なくとも1つのBeanが必要です。依存関係のアノテーション:{@ org.springframework.beans.factory.annotation.Autowired(required = true)} org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:507)で org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84)で org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:283)で ...26もっと 原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:依存関係に一致するタイプ[com.test.admin.service.FundService]のBeanが見つかりません:この依存関係のautowire候補として適格なBeanが少なくとも1つ必要です。依存関係のアノテーション:{@ org.springframework.beans.factory.annotation.Autowired(required = true)} org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:903)で org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:772)で org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:686)で org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:478)で ...28もっと