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-フレームワーク)。

要約する :

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で完全に動作する既存のテストを起動しようとしました.それらはローカルでは動作しません。)

4

3 に答える 3

0

これはクラスパスの問題、または単純なビルドの問題だと思います。特にSpring MVCとは関係ないと思います。特にMavenを使用しているため。

Eclipse Maven プラグインを使用していない場合は、実行します

mvn eclipse:eclipse 

コマンド ラインで、プロジェクト フォルダーに

次に、Eclipse で以下を確認します。

  • 'プロジェクト | Build' が自動的にチェックされます
  • WebServicesController は src/main/java ブランチにあります (src/test/java ではありません)
  • src/main/java はプロジェクトが Java ビルド パスにあります。Eclipse でプロジェクトを右クリックし、設定を確認します。

チェックしたら、「プロジェクト|」を実行します。Eclipse でクリーンアップ

于 2013-07-30T14:05:52.310 に答える
0

これはクラスパスの明らかな問題です。これを解決するための私のアプローチは次のとおりです。

  • まず、問題のあるクラス ファイルが存在する jar ファイルを見つけます。特定のクラスの jar ファイルを見つける方法がわからない場合は、それを行うための Eclipse ショートカットを確認するか、Eclipse で「Ctrl+T」を実行してクラスの名前を入力するだけで、クラス内のすべての jar ファイルが一覧表示されます。それらがEclipseクラスパスに表示される順序。

  • クラスパスにそのjarが含まれているかどうかを確認してください。クラスパスにjarが含まれていない場合は、クラスパスにそのクラスを追加してください。

  • クラスパスに存在する場合、クラスパスがオーバーライドされているか、アプリケーションがjarファイルまたは起動スクリプトで指定されたクラスパスを使用している可能性が高く、修正するには、アプリケーションで使用される正確なクラスパスを見つける必要があります.

于 2013-07-30T13:54:53.073 に答える
0

問題は、デプロイされたリソース「ライブラリ」にあります。ビルド パスで使用しているライブラリをプロジェクトにデプロイする必要があります。

プロパティ > 展開アセンブリ > ビルド パスからライブラリを追加

于 2013-07-30T13:52:52.503 に答える