在老的项目中使用的是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