Java 使用mock对Spring mvc控制器进行单元测试时出错
这是我第一次使用mockito测试我的SpringMVC控制器。这里有一个错误,我不知道为什么。我的项目使用spring3.2和Mybatis。 我的控制器代码如下所示:Java 使用mock对Spring mvc控制器进行单元测试时出错,java,spring,junit,mockito,Java,Spring,Junit,Mockito,这是我第一次使用mockito测试我的SpringMVC控制器。这里有一个错误,我不知道为什么。我的项目使用spring3.2和Mybatis。 我的控制器代码如下所示: @Controller @RequestMapping(value = "/person") public class MockTestController { private AppUserModel appUserModel; @Autowired public MockTestController(AppUserM
@Controller
@RequestMapping(value = "/person")
public class MockTestController {
private AppUserModel appUserModel;
@Autowired
public MockTestController(AppUserModel appUserModel) {
this.appUserModel = appUserModel;
}
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public String getPerson(@PathVariable Long id, Model model) {
model.addAttribute("person", appUserModel.getMemberById(id));
return "test/person";
}
}
下面是我的单元测试代码:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath*:/spring.xml",
"file:web/WEB-INF/spring/operator-servlet.xml" })
public class MockControllerTest {
@Mock
private AppUserModel appUserModel;
@InjectMocks
private MockTestController mockController;
private MockMvc mockMvc;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
mockMvc = MockMvcBuilders.standaloneSetup(mockController).build();
}
@Test
public void testGetPerson() throws Exception {
when(appUserModel.getMemberById(1108L)).thenReturn(new Member());
mockMvc.perform(get("/person/{id}", 1108L)).andExpect(status().isOk())
.andExpect(view().name("test/person"))
.andExpect(model().attribute("person", new Member()));
}
}
然后Junit显示错误日志:
原因:org.springframework.beans.factory.BeanCreationException:创建名为“org.springframework.validation.beanvalidation.LocalValidatoryFactoryBean0”的bean时出错:调用init方法失败;嵌套异常为javax.validation.ValidationException:无法实例化配置。
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBeanAbstractAutowireCapableBeanFactory.java:1486
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBeanAbstractAutowireCapableBeanFactory.java:524
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanAbstractAutowireCapableBeanFactory.java:461
位于org.springframework.beans.factory.support.AbstractBeanFactory$1.getObjectAbstractBeanFactory.java:295
位于org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingletonDefaultSingletonBeanRegistry.java:223
位于org.springframework.beans.factory.support.AbstractBeanFactory.doGetBeanAbstractBeanFactory.java:292
位于org.springframework.beans.factory.support.AbstractBeanFactory.getBeanAbstractBeanFactory.java:194
位于org.springframework.beans.factory.support.DefaultListableBeanFactory.PreInstanceSingleTonsDefaultListableBeanFactory.java:607
位于org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitializationAbstractApplicationContext.java:932
位于org.springframework.context.support.AbstractApplicationContext.refreshAbstractApplicationContext.java:479
位于org.springframework.test.context.support.AbstractGenericContextLoader.loadContextAbstractGenericContextLoader.java:106
位于org.springframework.test.context.support.AbstractGenericContextLoader.loadContextAbstractGenericContextLoader.java:57
位于org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.delegateLoadingAbstractDelegatingSmartContextLoader.java:100
位于org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.loadContextAbstractDelegatingSmartContextLoader.java:248
位于org.springframework.test.context.TestContext.loadApplicationContextTestContext.java:124
位于org.springframework.test.context.TestContext.getApplicationContextTestContext.java:148
... 还有24个
原因:javax.validation.ValidationException:无法实例化配置。
位于javax.validation.validation$GenericBootstrapImpl.configureValidation.java:272
位于org.springframework.validation.beanvalidation.LocalValidatorFactoryBean.AfterPropertiesToLocalValidatorFactoryBean.java:182
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethodsAbstractAutowireCapableBeanFactory.java:1545
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBeanAbstractAutowireCapableBeanFactory.java:1483
... 39多
原因:java.lang.NullPointerException
位于java.util.ResourceBundle.getBundleResourceBundle.java:960
位于org.hibernate.validator.engine.ResourceBundleMessageInterpolator.loadBundleResourceBundleMessageInterpolator.java:202
位于org.hibernate.validator.engine.ResourceBundleMessageInterpolator.getFileBasedResourceBundleResourceBundleMessageInterpolator.java:182
位于org.hibernate.validator.engine.ResourceBundleMessageInterpolator.ResourceBundleMessageInterpolator.java:81
位于org.hibernate.validator.engine.ResourceBundleMessageInterpolator.ResourceBundleMessageInterpolator.java:73
位于org.hibernate.validator.engine.configurationmpl.configurationmpl.java:57
位于org.hibernate.validator.HibernateValidator.createGenericConfigurationHibernateValidator.java:43
位于javax.validation.validation$GenericBootstrapImpl.configureValidation.java:269
... 42多
这个项目没有使用hibernate。我需要帮助hibernate不仅仅是一个ORM框架。还有一个名为的验证框架,它是您的web应用程序使用它的参考实现。明白了。谢谢但我仍然没有找到导致错误的原因。也许在我的配置xml文件中。顺便问一下,我可以在哪里找到mockito教程来学习如何测试控制器?