2013-07-30 163 views
0

我在使用Spring Framework 3.2实现Spring MVC测试时遇到了一些问题(跟在http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/testing.html#spring-mvc-test-framework之后)。MVC测试控制器ClassNotFoundException

总结:

我使用Maven 3.0.4。

我有多个使用Spring Framework的项目。相关项目层次是:

  • 共同
  • web服务(使用普通和DAO)

在web服务,我有一个控制器

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和只知道,如果我写的不对的测试,尝试启动其在詹金斯完美运行已有的测试。他们没有在本地工作。)

+0

您是否也在使用Maven? –

+0

@AyubMalik是的我使用Maven 3.0.4 – user2508244

+0

尝试'项目>清洁' – jchips12

回答

0

您的问题与已部署的资源“库”有关,您在构建路径中使用的库应该部署在您的项目中。

属性>部署大会>从构建路径

+0

库已经在Deployment Assembly中。 – user2508244

0

这是类路径中的一个明确的问题添加库。这里是我的方法来解决这个问题:

  • 首先找出有问题的类文件存在的jar文件。如果您不知道如何查找某个特定类的jar文件,您可以看到Eclipse的快捷方式,或者您可以简单地在Eclipse中执行“Ctrl + T”并输入类的名称,它会列出所有的jar文件为了它们出现在eclipse classpath中。

  • 检查您的类路径是否包含该jar,如果您的类路径不包含该jar,那么只需将该类添加到您的类路径中即可。

  • 如果它出现在你的类路径中,那么很有可能你的类路径被覆盖,或者应用程序正在使用在jar文件或启动脚本中指定的类路径,并且需要找到你需要的确切类路径应用。

0

我认为这是一个类路径问题,或者是一个简单的构建问题。我不认为它特别与Spring MVC有关。特别是因为你使用的是Maven。

如果使用Eclipse的Maven插件,运行

mvn eclipse:eclipse 

在命令行中,在项目文件夹

然后检查在Eclipse以下。

  • '项目|建立”自动检查
  • WebServicesController在src /主/ Java的分支(不是的src/test/java下)
  • 的src/main/java的是项目 在Java构建路径。在Eclipse中右键单击该项目,然后检查 的设置。

一旦选中,执行'Project |清洁“在Eclipse中

+0

我按照你的指示,但我的问题仍然是一样的。 – user2508244

+0

如果在命令行上运行'mvn test',输出是什么? –

+0

我的评论是在你编辑之前。我使用了mvn eclipse:eclipse,现在我的项目已经完全崩溃,问题已经改变:无法加载ApplicationContext。我会回滚我认为 – user2508244