在老的项目中使用的是Spring3.2,最近我使用了Spring4.0.6进行迁移测试,之前使用的mock的测试没有问题,但是在Spring4中报错如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
java.lang.NoSuchMethodError: org.springframework.core.CollectionFactory.createLinkedMapIfPossible(I)Ljava/util/Map; at org.springframework.mock.web.MockHttpServletRequest.<init>(MockHttpServletRequest.java: 107 )
at org.springframework.mock.web.MockHttpServletRequest.<init>(MockHttpServletRequest.java: 187 )
at com.baidu.solr.finance.IncrementalContorllerTest.init(IncrementalContorllerTest.java: 28 )
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 org.junit.internal.runners.MethodRoadie.runBefores(MethodRoadie.java: 129 )
at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java: 93 )
at org.unitils.UnitilsJUnit4TestClassRunner$TestListenerInvokingMethodRoadie.runBeforesThenTestThenAfters(UnitilsJUnit4TestClassRunner.java: 186 )
at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java: 84 )
at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java: 49 )
at org.unitils.UnitilsJUnit4TestClassRunner.invokeTestMethod(UnitilsJUnit4TestClassRunner.java: 95 )
at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java: 61 )
at org.unitils.UnitilsJUnit4TestClassRunner.access$ 000 (UnitilsJUnit4TestClassRunner.java: 42 )
at org.unitils.UnitilsJUnit4TestClassRunner$ 1 .run(UnitilsJUnit4TestClassRunner.java: 60 )
at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java: 34 )
at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java: 44 )
at org.unitils.UnitilsJUnit4TestClassRunner.run(UnitilsJUnit4TestClassRunner.java: 67 )
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java: 50 )
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 )
|
我查看了一下代码和pom.xml的依赖关系,之前Spring3的依赖如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
< properties >
< spring.version >3.2.4.RELEASE</ spring.version >
< junit.version >4.10</ junit.version >
</ properties >
... < dependency >
< groupId >org.springframework</ groupId >
< artifactId >spring-mock</ artifactId >
< version >2.0.8</ version >
< scope >test</ scope >
</ dependency >
< dependency >
< groupId >org.springframework</ groupId >
< artifactId >spring-test</ artifactId >
< version >${spring.version}</ version >
< scope >test</ scope >
</ dependency >
|
到了Spring4,就需要把spring-mock依赖去除。
希望可以帮助到诸位!
本文转自 梦朝思夕 51CTO博客,原文链接:http://blog.51cto.com/qiangmzsx/1634774