spring接入swagger后单元测试报错
来源:互联网 发布:淘宝商城女装新款复古 编辑:程序博客网 时间:2024/05/14 04:31
spring:4.1.1.RELEASE
swagger:2.4.0
如下所示错误:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter#0'
: Initialization of bean failed; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name
'documentationPluginsBootstrapper'
defined in URL [jar:file:/Users/cheongz/Documents/workspace-sts-
3.7
.
1
.RELEASE/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/app_geneart_qa/WEB-INF/lib/springfox-spring-web-
2.2
.
2
.jar!/springfox/documentation/spring/web/plugins/DocumentationPluginsBootstrapper.
class
]: Unsatisfied dependency expressed through constructor argument with index
1
of type [springfox.documentation.spi.service.RequestHandlerProvider]: : Error creating bean with name
'webMvcRequestHandlerProvider'
defined in URL [jar:file:/Users/cheongz/Documents/workspace-sts-
3.7
.
1
.RELEASE/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/app_geneart_qa/WEB-INF/lib/springfox-spring-web-
2.2
.
2
.jar!/springfox/documentation/spring/web/plugins/WebMvcRequestHandlerProvider.
class
]: Unsatisfied dependency expressed through constructor argument with index
0
of type [java.util.List]: : Error creating bean with name
'requestMappingHandlerMapping'
defined in
class
path resource [org/springframework/web/servlet/config/annotation/DelegatingWebMvcConfiguration.
class
]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [
public
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.requestMappingHandlerMapping()] threw exception; nested exception is java.lang.ClassCastException: org.springframework.web.accept.ContentNegotiationManagerFactoryBean$$EnhancerByCGLIB$$5b6e6970 cannot be cast to org.springframework.web.accept.ContentNegotiationManager; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'requestMappingHandlerMapping'
defined in
class
path resource [org/springframework/web/servlet/config/annotation/DelegatingWebMvcConfiguration.
class
]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [
public
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.requestMappingHandlerMapping()] threw exception; nested exception is java.lang.ClassCastException: org.springframework.web.accept.ContentNegotiationManagerFactoryBean$$EnhancerByCGLIB$$5b6e6970 cannot be cast to org.springframework.web.accept.ContentNegotiationManager; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name
'webMvcRequestHandlerProvider'
defined in URL [jar:file:/Users/cheongz/Documents/workspace-sts-
3.7
.
1
.RELEASE/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/app_geneart_qa/WEB-INF/lib/springfox-spring-web-
2.2
.
2
.jar!/springfox/documentation/spring/web/plugins/WebMvcRequestHandlerProvider.
class
]: Unsatisfied dependency expressed through constructor argument with index
0
of type [java.util.List]: : Error creating bean with name
'requestMappingHandlerMapping'
defined in
class
path resource [org/springframework/web/servlet/config/annotation/DelegatingWebMvcConfiguration.
class
]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [
public
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.requestMappingHandlerMapping()] threw exception; nested exception is java.lang.ClassCastException: org.springframework.web.accept.ContentNegotiationManagerFactoryBean$$EnhancerByCGLIB$$5b6e6970 cannot be cast to org.springframework.web.accept.ContentNegotiationManager; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'requestMappingHandlerMapping'
defined in
class
path resource [org/springframework/web/servlet/config/annotation/DelegatingWebMvcConfiguration.
class
]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [
public
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.requestMappingHandlerMapping()] threw exception; nested exception is java.lang.ClassCastException: org.springframework.web.accept.ContentNegotiationManagerFactoryBean$$EnhancerByCGLIB$$5b6e6970 cannot be cast to org.springframework.web.accept.ContentNegotiationManager
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:
532
)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:
461
)
at org.springframework.beans.factory.support.AbstractBeanFactory$
1
.getObject(AbstractBeanFactory.java:
295
)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:
223
)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:
292
)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:
194
)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:
626
)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:
932
)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:
479
)
at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:
651
)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:
599
)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:
665
)
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:
518
)
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:
459
)
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:
136
)
at javax.servlet.GenericServlet.init(GenericServlet.java:
158
)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:
1284
)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:
1197
)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:
1087
)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:
5253
)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:
5543
)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:
150
)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:
1574
)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:
1564
)
at java.util.concurrent.FutureTask.run(FutureTask.java:
262
)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:
1145
)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:
615
)
at java.lang.Thread.run(Thread.java:
745
)
Caused by: org.springframework.beans.factory.Un
查阅文档,发现https://github.com/springfox/springfox/issues/1099这边有解决办法
就是要测试用例上面加@WebAppConfiguration注解,如下所示:
@RunWith
(SpringJUnit4ClassRunner.
class
)
@WebAppConfiguration
@ContextConfiguration
(locations = {
"classpath:applicationContext.xml"
})
public
class
TransactionServiceTest {
@Autowired
private
TransactionService transactionService;
}
但是运行测试用例时依然报错,如下所示:
19
:
06
:
26.622
[main] ERROR o.s.test.context.TestContextManager - Caught exception
while
allowing TestExecutionListener [org.springframework.test.context.web.ServletTestExecutionListener
@5abd4570
] to prepare test instance [com.meituan.service.travel.budget.service.TransactionServiceTest
@244aaf0d
]
java.lang.IllegalStateException: Failed to load ApplicationContext
at org.springframework.test.context.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:
91
)
at org.springframework.test.context.DefaultTestContext.getApplicationContext(DefaultTestContext.java:
74
)
at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:
169
)
at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:
109
)
at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:
212
)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:
199
)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$
1
.runReflectiveCall(SpringJUnit4ClassRunner.java:
251
)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:
15
)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:
253
)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:
216
)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:
82
)
at org.junit.runners.ParentRunner$
3
.run(ParentRunner.java:
231
)
at org.junit.runners.ParentRunner$
1
.schedule(ParentRunner.java:
60
)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:
229
)
at org.junit.runners.ParentRunner.access$
000
(ParentRunner.java:
50
)
at org.junit.runners.ParentRunner$
2
.evaluate(ParentRunner.java:
222
)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:
60
)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:
67
)
at org.junit.runners.ParentRunner.run(ParentRunner.java:
300
)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:
162
)
at org.junit.runner.JUnitCore.run(JUnitCore.java:
157
)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:
78
)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:
212
)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:
68
)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
57
)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
43
)
at java.lang.reflect.Method.invoke(Method.java:
606
)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:
140
)
Caused by: java.lang.SecurityException:
class
"javax.servlet.SessionCookieConfig"
's signer information does not match signer information of other classes in the same
package
at java.lang.ClassLoader.checkCerts(ClassLoader.java:
952
)
at java.lang.ClassLoader.preDefineClass(ClassLoader.java:
666
)
at java.lang.ClassLoader.defineClass(ClassLoader.java:
794
)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:
142
)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:
449
)
at java.net.URLClassLoader.access$
100
(URLClassLoader.java:
71
)
at java.net.URLClassLoader$
1
.run(URLClassLoader.java:
361
)
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:
425
)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:
308
)
at java.lang.ClassLoader.loadClass(ClassLoader.java:
358
)
at org.springframework.test.context.web.AbstractGenericWebContextLoader.configureWebResources(AbstractGenericWebContextLoader.java:
199
)
at org.springframework.test.context.web.AbstractGenericWebContextLoader.loadContext(AbstractGenericWebContextLoader.java:
126
)
at org.springframework.test.context.web.AbstractGenericWebContextLoader.loadContext(AbstractGenericWebContextLoader.java:
59
)
at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.delegateLoading(AbstractDelegatingSmartContextLoader.java:
108
)
at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.loadContext(AbstractDelegatingSmartContextLoader.java:
260
)
at org.springframework.test.context.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:
63
)
at org.springframework.test.context.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:
83
)
...
28
common frames omitted
解决方法见:http://stackoverflow.com/questions/21561432/failed-to-load-applicationcontext-during-spring-unit-test
只需要把servlet的版本升级到3.X就可以了
至此,问题解决
0 0
- spring接入swagger后单元测试报错
- spring接入swagger后单元测试报错
- mybatis+spring spring单元测试报错
- spring+mybatis做单元测试报错IllegalStateException
- iOS前后端分离Swagger使用 swagger ISO8016报错
- Spring Boot单元测试编译报错 No runnable methods
- spring+quart后tomcat报错
- junit4单元测试报错解决
- Spring Boot 集成Swagger
- Spring Boot 集成Swagger
- Spring Boot 集成Swagger
- Spring Boot 集成Swagger
- 【Spring Boot】springboot + swagger
- spring boot 集成 Swagger
- spring boot集成swagger
- spring boot 集成swagger
- Spring Boot集成swagger
- Spring Boot 集成Swagger
- ILayer 接口
- Ubuntu Server 16.04 安装MySQL并设置远程访问
- mybatis问题org.apache.ibatis.binding.BindingException: Parameter 'title' not found.
- Ubuntu Server 16.04 安装MySQL并设置远程访问
- POJ 1226Substrings
- spring接入swagger后单元测试报错
- php面向对象之多态(1)
- Android插件化开发 第三篇 [加载插件资源]
- 面试3-Java虚拟机
- java高级_抽象与封装
- Oracle 函数实现动态解析公式字符串
- OC_10_KVO
- 分页.php
- 源码分析1:Android的LruCache类分析