【发布时间】:2016-03-16 19:58:55
【问题描述】:
我有一个应用程序(使用注释的 Spring MVC 4 + Hibernate/JPA + MySQL + Maven 集成示例),使用基于注释的配置将 Spring 与 Hibernate 集成。
我想测试一个控制器的这种方法:
@RequestMapping(value = { "/androidCallBack" }, method = RequestMethod.GET)
public String performAndroidCallBack(@RequestParam Map<String, String> allRequestParams) throws ClientProtocolException, IOException {
...
}
这是测试
public class AndroidCallBackControllerTest {
@InjectMocks
AndroidCallBackController androidCallBackController;
@Spy
Map<String, String> allRequestParams;
@BeforeClass
public void setUp(){
MockitoAnnotations.initMocks(this);
}
@Test
public void androidCallBack() throws ClientProtocolException, IOException {
Assert.assertEquals(androidCallBackController.performAndroidCallBack(allRequestParams), "alldevices");
}
}
但我在运行测试时出现此错误
FAILED CONFIGURATION: @BeforeClass setUp
org.mockito.exceptions.base.MockitoException: Unable to initialize @Spy annotated field 'allRequestParams'.
Type 'Map' is an interface and it cannot be spied on.
at com.tdk.oti.controller.AndroidCallBackControllerTest.setUp(AndroidCallBackControllerTest.java:25)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
【问题讨论】:
标签: java spring-mvc jpa junit testng