Controller 单元测试报异常:Invocation of init method failed

asdfasfadfafd 2012-09-18 03:49:24
小弟写了一个最简单的控制器测试用例,但是总是报异常,应该是配置方式有问题,以下贴出较详细的代码及异常信息,各位能否帮我决绝这个难题呢?谢谢了...

以下是Controller代码

@Controller
public class LoginController {
@RequestMapping(value="/login")
public String login(ModelMap model) {
return "user/login";
}
}


以下是测试用例代码

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={ "classpath:applicationContext*.xml", "classpath:dispatcher-servlet.xml" })
public class LoginControllerTest extends AbstractTransactionalJUnit4SpringContextTests {
@Before
public void setUp() throws Exception {
}

@Test
public void testLoginModelMap() throws Exception {
System.out.println("controller test...");
}
}


以下是dispatcher-servlet.xml配置信息,applicationContext.xml内容和一般配置一样,不另行贴出

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">

<context:component-scan base-package="com.dreawer.controller"/>

<mvc:annotation-driven/>

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:order="2"
p:viewClass="org.springframework.web.servlet.view.JstlView"
p:prefix="/WEB-INF/pages/"
p:suffix=".jsp"/>
</beans>


以下是异常信息
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:220)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:301)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:303)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:240)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
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.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:180)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
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.BeanCreationException: Error creating bean with name 'org.springframework.validation.beanvalidation.LocalValidatorFactoryBean#0': Invocation of init method failed; nested exception is javax.validation.ValidationException: Unable to instantiate Configuration.
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
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)
... 24 more
Caused by: javax.validation.ValidationException: Unable to instantiate Configuration.
at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:272)
at org.springframework.validation.beanvalidation.LocalValidatorFactoryBean.afterPropertiesSet(LocalValidatorFactoryBean.java:183)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
... 37 more
Caused by: java.lang.NullPointerException
at java.util.ResourceBundle.getBundle(ResourceBundle.java:950)
at org.hibernate.validator.engine.ResourceBundleMessageInterpolator.loadBundle(ResourceBundleMessageInterpolator.java:202)
at org.hibernate.validator.engine.ResourceBundleMessageInterpolator.getFileBasedResourceBundle(ResourceBundleMessageInterpolator.java:182)
at org.hibernate.validator.engine.ResourceBundleMessageInterpolator.<init>(ResourceBundleMessageInterpolator.java:81)
at org.hibernate.validator.engine.ResourceBundleMessageInterpolator.<init>(ResourceBundleMessageInterpolator.java:73)
at org.hibernate.validator.engine.ConfigurationImpl.<init>(ConfigurationImpl.java:57)
at org.hibernate.validator.HibernateValidator.createGenericConfiguration(HibernateValidator.java:43)
at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:269)
... 40 more
2012-09-18 15:40:11,286 DEBUG [Resource Destroyer in BasicResourcePool.close()] com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:566) - com.mchange.v2.c3p0.impl.NewPooledConnection@be834a closed by a client.

请注意红色标注异常信息,它是由<mvc:annotation-driven/>配置项引起的,将这个配置去掉就可以加载成功,否则加载失败。
请问各位大侠有没有解决办法?万分感激!
...全文
6557 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
m421299142 2015-05-14
  • 打赏
  • 举报
回复
引用 9 楼 h1558674111 的回复:
谢谢了 我的情况 有点复杂 ,在集成springmvc和hibernate的项目中,之前用<context:annotation-config/> 这个配置扫描项目注解,项目蛮简单,我用jetty插件跑的好好的。后来一个同事用一些mvc更多的注解加上了<mvc:annotation-driven />这个配置,然后jetty就跑不动了,就是你上面那个验证的错误。也是找hibernate-validator-4.1.0.Final.jar 和validation-api-1.0.0.GA.jar 以及修改hibernate的配置<prop name="javax.persistence.validation.mode">none</prop> (spring集成中的)都没用,最后看到你这个去掉bean-validator.jar 我果断去myeclipse 安装目录下找到 EE_6这个目录把bean-validator.jar去掉了结果成功了。这个问题是很奇怪的,tomcat会自动忽略那个错误,而jetty就不行直接关闭sessionfactory。谢谢了!
删除那个jar包后 会报错的啊。。。怎么回事??
m421299142 2015-05-14
  • 打赏
  • 举报
回复
为什么我删掉那个文件后项目就会报错。。。??我也是这个问题 到底该怎么解决,,,我用的spring mvc和mybatis,根本就没用到hibernate 怎么也会报这个错。。真搞不懂 ,求指教谢谢了 。。。
muyitd 2014-08-11
  • 打赏
  • 举报
回复
引用 9 楼 h1558674111 的回复:
谢谢了 我的情况 有点复杂 ,在集成springmvc和hibernate的项目中,之前用<context:annotation-config/> 这个配置扫描项目注解,项目蛮简单,我用jetty插件跑的好好的。后来一个同事用一些mvc更多的注解加上了<mvc:annotation-driven />这个配置,然后jetty就跑不动了,就是你上面那个验证的错误。也是找hibernate-validator-4.1.0.Final.jar 和validation-api-1.0.0.GA.jar 以及修改hibernate的配置<prop name="javax.persistence.validation.mode">none</prop> (spring集成中的)都没用,最后看到你这个去掉bean-validator.jar 我果断去myeclipse 安装目录下找到 EE_6这个目录把bean-validator.jar去掉了结果成功了。这个问题是很奇怪的,tomcat会自动忽略那个错误,而jetty就不行直接关闭sessionfactory。谢谢了!
就是jar包的问题
h1558674111 2014-07-29
  • 打赏
  • 举报
回复
谢谢了 我的情况 有点复杂 ,在集成springmvc和hibernate的项目中,之前用<context:annotation-config/> 这个配置扫描项目注解,项目蛮简单,我用jetty插件跑的好好的。后来一个同事用一些mvc更多的注解加上了<mvc:annotation-driven />这个配置,然后jetty就跑不动了,就是你上面那个验证的错误。也是找hibernate-validator-4.1.0.Final.jar 和validation-api-1.0.0.GA.jar 以及修改hibernate的配置<prop name="javax.persistence.validation.mode">none</prop> (spring集成中的)都没用,最后看到你这个去掉bean-validator.jar 我果断去myeclipse 安装目录下找到 EE_6这个目录把bean-validator.jar去掉了结果成功了。这个问题是很奇怪的,tomcat会自动忽略那个错误,而jetty就不行直接关闭sessionfactory。谢谢了!
yxc023 2012-12-17
  • 打赏
  • 举报
回复
..我去 我又试了下 解决了 这个异常需要在hibernate.cfg.xml配置文件中配置: <property name="javax.persistence.validation.mode">none</property> 很多人说上面那个方法,但是我试了没什么效果 然后我把buildpath下的 bean-validator.jar 这个jar包删掉 就好了
yxc023 2012-12-17
  • 打赏
  • 举报
回复
同样,这个问题我一直都没解决掉.
asdfasfadfafd 2012-09-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

在你上面的xml文件中加入下面内容试试
<import resource="classpath:applicationContext.xml"/>
<import resource="classpath:dispatcher-servlet.xml"/>
[/Quote]

按照你的方法,我尝试了一下,还是报异常,异常内容和之前的一样,不过还是要感谢你的帮助!
Cactus_hxk 2012-09-19
  • 打赏
  • 举报
回复
在你上面的xml文件中加入下面内容试试
<import resource="classpath:applicationContext.xml"/>
<import resource="classpath:dispatcher-servlet.xml"/>
asdfasfadfafd 2012-09-19
  • 打赏
  • 举报
回复
顶起...

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧