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もっと