2011-06-29 4 views
0

プロジェクト内ですべてのunittestsクラスを実行すると例外は発生しません。私はただ一人の個人クラスを選択した場合は、「java.lang.IllegalStateException」例外が理由でスローされますEclipse + Junit4 + SpringFramework:個々のUnittestクラスを実行すると「ApplicationContextをロードできませんでした」例外

「のApplicationContextをロードできませんでした」

ここでは、スタックトレースです:

2011-06-29 17:48:12,400 ERROR [main] - TestContextManager.prepareTestInstance Caught exception while allowing TestExecutionListener [org.springframewor[email protected]75c744] to prepare test instance [[email protected]] 
java.lang.IllegalStateException: Failed to load ApplicationContext 
     at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:203) 
     at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:109) 
     at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:75) 
     at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:255) 
     at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:93) 
     at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.invokeTestMethod(SpringJUnit4ClassRunner.java:130) 
     at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51) 
     at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44) 
     at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27) 
     at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37) 
     at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42) 
     at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46) 
     at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'dataSource' defined in class path resource [ProjectDB.xml]: Could not resolve placeholder 'env.jdbc.url' 
     at org.springframework.beans.factory.config.PropertyPlaceholderConfigurer.processProperties(PropertyPlaceholderConfigurer.java:268) 
     at org.springframework.beans.factory.config.PropertyResourceConfigurer.postProcessBeanFactory(PropertyResourceConfigurer.java:75) 
     at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:554) 
     at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:528) 
     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:363) 
     at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:84) 
     at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:42) 
     at org.springframework.test.context.TestContext.loadApplicationContext(TestContext.java:173) 
     at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:199) 
     ... 16 more 

根本的な原因は、表示されているように、プレースホルダ解決のためです。 ProjectDB.xmlファイルは実際に別のjarファイル内に存在します。

なぜ行動の違いがありますか? (すべてのテストクラスと1対1)

答えて

1

env.jdbc.url解決されていません。私はあなたがこれをJVMの引数(またはenv変数)として渡していると仮定し、これはすべてのテストを実行するための実行コンフィギュレーションとして記憶されていますが、個々のテストには設定されていません。

[実行]ダイアログボックスで必要なプロパティがすべて設定されていることを確認してください。

+0

ありがとうございます。私はラベルとその値を 'Environment'タブに追加するだけです。 –

関連する問題