我在使用 Spring Framework 3.2 实现 Spring MVC 测试时遇到了一些问题(遵循http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/testing.html#spring-mvc-test-框架)。
总结一下:
我使用 Maven 3.0.4。
我有多个使用 Spring Framework 的项目。相关项目层次结构是:
- 常见的
- 道
- 网络服务(使用 common 和 dao)
在网络服务中,我有一个控制器
package com.lalala;
...
@Controller
@RequestMapping("/")
public class WebServicesController {
@Autowired private WebService webService;
//some methods...
}
WebService 类被声明为接口并具有实现。
现在,测试:
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration("/testApplicationContext.xml")
public class WebServicesTest {
private MockMvc mockMvc;
@Before
public void setUp() {
this.mockMvc = MockMvcBuilders.standaloneSetup(new WebServicesController()).build();
}
@Test
public void inexistentService() throws Exception {
mockMvc.perform(get("webservices/pong").accept(MediaType.APPLICATION_JSON)).andExpect(status().is(500)).andDo(print());
}
}
和配置文件 testApplicationContext.xml :
<beans ... >
<import resource="classpath:spring-hibernate-test.xml"/>
<tx:annotation-driven/>
<context:annotation-config />
<context:component-scan base-package="com.lalala"/>
</beans>
当我尝试在 Eclipse 中启动测试时,出现 java.lang.NoClassDefFoundError: Caused by: java.lang.ClassNotFoundException: com.lalala.WebServicesController。有人能告诉我我的配置和测试有什么问题吗?
(除此之外,该项目一旦部署在 tomcat 中就可以正常工作,只是为了知道我是否编写了错误的测试,我尝试启动已经存在的测试,这些测试在 jenkins 上完美运行。它们在本地无法运行。)