我在使用Spring Framework 3.2(http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/testing.html#spring-mvc-test-framework之后)实现Spring MVC测试时遇到了一些问题。
总结:
我使用Maven 3.0.4。
我有多个使用Spring Framework的项目。相关的项目层次结构是:
在webservices中,我有一个Controller
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: 引起:java.lang.ClassNotFoundException:com.lalala.WebServicesController。有人能告诉我配置和测试有什么问题吗?
(除此之外,该项目在tomcat中部署后工作正常,只是为了知道我是否编写了错误的测试,我尝试启动现有的测试,这些测试完全适用于jenkins。它们不能在本地工作。)
答案 0 :(得分:0)
您的问题在于已部署的资源“库”,您在构建路径中使用的库应该部署在您的项目中。
属性&gt;部署组装&gt;从构建路径添加库
答案 1 :(得分:0)
这是类路径的明显问题。这是我解决这个问题的方法:
首先找出存在有问题的类文件的jar文件。如果您不知道如何找到特定类的jar文件,您可以看到eclipse快捷方式,或者您只需在Eclipse中执行“Ctrl + T”并键入类的名称,它将列出所有jar中的命令它们出现在eclipse类路径中。
检查您的类路径是否包含该jar,如果您的类路径不包含jar,则只需在类路径中添加该类。
如果它存在于您的类路径中,则很有可能您的类路径被覆盖,或者应用程序正在使用jar文件或启动脚本中指定的类路径,并修复您需要找到所使用的确切类路径你的申请。
答案 2 :(得分:0)
我认为这是一个类路径问题,或者是一个简单的构建问题。我认为它与Spring MVC无关。特别是因为你正在使用Maven。
如果不使用Eclipse Maven插件,请运行
mvn eclipse:eclipse
在命令行上,在项目文件夹中
然后在Eclipse中检查以下内容。
选中后,执行'项目|清理'在Eclipse中