Java 使用mock对Spring mvc控制器进行单元测试时出错

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

这是我第一次使用mockito测试我的SpringMVC控制器。这里有一个错误,我不知道为什么。我的项目使用spring3.2和Mybatis。 我的控制器代码如下所示:

@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教程来学习如何测试控制器?