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 を使用する複数のプロジェクトがあります。関連するプロジェクト階層は次のとおりです。
- 一般
- ダオ
- Web サービス (common と dao を使用)
Web サービスには、コントローラーが 1 つあります。
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で完全に動作する既存のテストを起動しようとしました.それらはローカルでは動作しません。)