2012-07-27 8 views
2

에 의해 클래스를 테스트의 ApplicationContext를로드하지 못했습니다! ApplicationContext를솔루션을 찾을 수 없습니다 Junit와

@RunWith(SpringJUnit4ClassRunner.class) 

@ContextConfiguration(locations={"root-context.xml", "database.xml"}) 

@Transactional 

public class BaseDaoTest { 

@Autowired 

private EmployeesDAO emplDao; 

...

루트-context.xml에와 database.xml를 사용하여 내 DAO를 테스트하기 위해 시도 테스트 패키지와 동일한 패키지에 있습니다. WEB-INF/spring에서이 xml-s를 분리했다. 당신이 jdbc.properties 파일에 사용자의 컨텍스트 파일 중 하나에서 종속성을 가지고있는 것처럼

Testsuite: org.company.employees.dao.BaseDaoTest 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:186) 
    at org.apache.log4j.helpers.Loader.loadClass(Loader.java:179) 
    at org.apache.log4j.xml.DOMConfigurator.parseLayout(DOMConfigurator.java:534) 
    at org.apache.log4j.xml.DOMConfigurator.parseAppender(DOMConfigurator.java:259) 
    at org.apache.log4j.xml.DOMConfigurator.findAppenderByName(DOMConfigurator.java:171) 
    at org.apache.log4j.xml.DOMConfigurator.findAppenderByReference(DOMConfigurator.java:184) 
    at org.apache.log4j.xml.DOMConfigurator.parseChildrenOfLoggerElement(DOMConfigurator.java:502) 
    at org.apache.log4j.xml.DOMConfigurator.parseCategory(DOMConfigurator.java:415) 
    at org.apache.log4j.xml.DOMConfigurator.parse(DOMConfigurator.java:919) 
    at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:790) 
    at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:696) 
    at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:471) 
    at org.apache.log4j.LogManager.<clinit>(LogManager.java:125) 
    at org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:73) 
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:249) 
    at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) 
    at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:131) 
    at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:351) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.<clinit>(SpringJUnit4ClassRunner.java:91) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:525) 
    at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:31) 
    at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:24) 
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) 
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29) 
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) 
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24) 
    at junit.framework.JUnit4TestAdapter.<init>(JUnit4TestAdapter.java:31) 
    at junit.framework.JUnit4TestAdapter.<init>(JUnit4TestAdapter.java:24) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:525) 
    at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:474) 
    at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1060) 
    at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:911) 
log4j:ERROR No layout set for the appender named [consoleAppender]. 
Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 1,108 sec 

------------- Standard Error ----------------- 
log4j:ERROR Could not create the Layout. Reported error follows. 
java.lang.ClassNotFoundException: org.apache.log4j.EnhancedPatternLayout 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:186) 
    at org.apache.log4j.helpers.Loader.loadClass(Loader.java:179) 
    at org.apache.log4j.xml.DOMConfigurator.parseLayout(DOMConfigurator.java:534) 
    at org.apache.log4j.xml.DOMConfigurator.parseAppender(DOMConfigurator.java:259) 
    at org.apache.log4j.xml.DOMConfigurator.findAppenderByName(DOMConfigurator.java:171) 
    at org.apache.log4j.xml.DOMConfigurator.findAppenderByReference(DOMConfigurator.java:184) 
    at org.apache.log4j.xml.DOMConfigurator.parseChildrenOfLoggerElement(DOMConfigurator.java:502) 
    at org.apache.log4j.xml.DOMConfigurator.parseCategory(DOMConfigurator.java:415) 
    at org.apache.log4j.xml.DOMConfigurator.parse(DOMConfigurator.java:919) 
    at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:790) 
    at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:696) 
    at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:471) 
    at org.apache.log4j.LogManager.<clinit>(LogManager.java:125) 
    at org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:73) 
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:249) 
    at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) 
    at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:131) 
    at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:351) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.<clinit>(SpringJUnit4ClassRunner.java:91) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:525) 
    at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:31) 
    at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:24) 
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) 
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29) 
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) 
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24) 
    at junit.framework.JUnit4TestAdapter.<init>(JUnit4TestAdapter.java:31) 
    at junit.framework.JUnit4TestAdapter.<init>(JUnit4TestAdapter.java:24) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:525) 
    at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:474) 
    at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1060) 
    at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:911) 
log4j:ERROR No layout set for the appender named [consoleAppender]. 
------------- ---------------- --------------- 
Testcase: testCreateEmployee(org.company.employees.dao.BaseDaoTest): Caused an ERROR 
Failed to load ApplicationContext 
java.lang.IllegalStateException: Failed to load ApplicationContext 
    at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:308) 
    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:321) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:211) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:287) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:289) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231) 
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) 
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174) 
Caused by: org.springframework.beans.factory.BeanInitializationException: Could not load properties; nested exception is java.io.FileNotFoundException: class path resource [WEB-INF/spring/jdbc.properties] cannot be opened because it does not exist 
    at org.springframework.beans.factory.config.PropertyResourceConfigurer.postProcessBeanFactory(PropertyResourceConfigurer.java:78) 
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:663) 
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:638) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:407) 
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:84) 
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:1) 
    at org.springframework.test.context.TestContext.loadApplicationContext(TestContext.java:280) 
    at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:304) 
Caused by: java.io.FileNotFoundException: class path resource [WEB-INF/spring/jdbc.properties] cannot be opened because it does not exist 
    at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:158) 
    at org.springframework.core.io.support.PropertiesLoaderSupport.loadProperties(PropertiesLoaderSupport.java:181) 
    at org.springframework.core.io.support.PropertiesLoaderSupport.mergeProperties(PropertiesLoaderSupport.java:161) 
    at org.springframework.beans.factory.config.PropertyResourceConfigurer.postProcessBeanFactory(PropertyResourceConfigurer.java:69) 

답변

3

것 같습니다 :
나는 다음 오류가 발생했습니다. 클래스 패스 어딘가에 배치하고이 내가 한 일이다 classpath:/mypath/jdbc.properties

+0

도움 주셔서 감사합니다. 지금은 작동합니다 – ema

+1

이 답변을 올바르게 작동하는 것으로 표시하는 것을 잊지 마십시오. –

2
package au.com.flexcontacts.test.common; 


import org.junit.runner.RunWith; 
import org.springframework.beans.BeansException; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.beans.factory.config.ConfigurableBeanFactory; 
import org.springframework.context.ApplicationContext; 
import org.springframework.context.ApplicationContextAware; 
import org.springframework.mock.web.MockHttpServletRequest; 
import org.springframework.orm.hibernate3.HibernateTemplate; 
import org.springframework.test.context.ContextConfiguration; 
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 
import org.springframework.web.context.request.RequestContextHolder; 
import org.springframework.web.context.request.RequestScope; 
import org.springframework.web.context.request.ServletRequestAttributes; 
import org.springframework.web.context.request.SessionScope; 

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration({"classpath:/controllers.xml"}) 
public class SpringTest implements ApplicationContextAware { 

    protected ApplicationContext applicationContext; 
    protected MockHttpServletRequest request; 
    protected ServletRequestAttributes attributes; 

    public void setApplicationContext(ApplicationContext applicationContext1) 
      throws BeansException { 
     applicationContext = applicationContext1; 
    } 

    protected void scopedBeansConfig() {   
     ConfigurableBeanFactory configurableBeanFactory = (ConfigurableBeanFactory) applicationContext.getAutowireCapableBeanFactory(); 
     configurableBeanFactory.registerScope("session", new SessionScope()); 
     configurableBeanFactory.registerScope("request", new RequestScope()); 
     request = new MockHttpServletRequest(); 
     attributes = new ServletRequestAttributes(request); 
     RequestContextHolder.setRequestAttributes(attributes); 
    } 

} 

으로 참조 - 해당 파일에 대한 참조를 해결해야합니다. 내 모든 봄 테스트는이 수업을 확장 할 것입니다.

+0

고마워 녀석! 그것을 사용합니다 – ema

+0

@ emir-ali – Khush

+0

이 작품을 사용 했습니까? @ emir-ali – Khush

관련 문제