Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse+Junit4+SpringFramework:运行单个Unittest类导致“加载ApplicationContext失败”异常_Java_Eclipse_Spring_Junit_Junit4 - Fatal编程技术网

Java Eclipse+Junit4+SpringFramework:运行单个Unittest类导致“加载ApplicationContext失败”异常

Java Eclipse+Junit4+SpringFramework:运行单个Unittest类导致“加载ApplicationContext失败”异常,java,eclipse,spring,junit,junit4,Java,Eclipse,Spring,Junit,Junit4,如果在项目中运行所有unittests类,则不会触发异常 但是,如果我只选择一个单独的类,则会由于加载ApplicationContext失败的原因引发“java.lang.IllegalStateException”异常 以下是堆栈跟踪: 2011-06-29 17:48:12,400 ERROR [main] - TestContextManager.prepareTestInstance Caught exception while allowing TestExecutionListen

如果在项目中运行所有unittests类,则不会触发异常

但是,如果我只选择一个单独的类,则会由于加载ApplicationContext失败的原因引发“java.lang.IllegalStateException”异常

以下是堆栈跟踪:

2011-06-29 17:48:12,400 ERROR [main] - TestContextManager.prepareTestInstance Caught exception while allowing TestExecutionListener [org.springframework.test.context.support.DependencyInjectionTestExecutionListener@75c744] to prepare test instance [com.ahwkong.work.MyTest@6d6aa0]
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文件中

为什么行为上有差异?未解析所有测试类与一个

env.jdbc.url。我假设您将其作为JVM参数或env变量传递,并且您将其作为运行所有测试的运行配置来记住,但它不是为单个测试设置的


确保在“运行”对话框中设置了所有必需的属性。

谢谢,它可以工作。我只需要在“环境”选项卡中添加标签及其值。