Spring MVC アプリケーションのテストを開始するために適切なコンテンツを検索するのに疲れ果てているため、SO は検索エンジンの代替ではないため、この質問をするのをやめることはできません。私たちは春と単体テストに非常に慣れていません。Spring REST サービスのテスト、コントローラーのテスト、および Spring のセキュリティ テストのステップバイステップのチュートリアル (ある場合) へのリンクを提供してください。
助けてください。
前もって感謝します。
Spring MVC アプリケーションのテストを開始するために適切なコンテンツを検索するのに疲れ果てているため、SO は検索エンジンの代替ではないため、この質問をするのをやめることはできません。私たちは春と単体テストに非常に慣れていません。Spring REST サービスのテスト、コントローラーのテスト、および Spring のセキュリティ テストのステップバイステップのチュートリアル (ある場合) へのリンクを提供してください。
助けてください。
前もって感謝します。
コントローラー自体のコードをテストする (正しい ModelAndView または ModelMap を返す) 場合は、いくつかの単体テストを簡単に作成できます。私は通常、これにspring-testとjunitを使用します。
次に、次のようにテストを記述します。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring-test-beans.xml")
public class FormControllerTest {
@Autowired
private MyController controller;
@Test
public void testFirstAction() {
ModelMap model = new ModelMap();
assertEquals("result", controller.firstAction("data", model));
assertEquals("test", model.get("data"));
}
}
このようにして、ビュー/モデルが正しいかどうかをテストします。Web ページ自体が正しく、正しいアクションを使用しているかどうかを確認したい場合は、Selenium 統合テストを確認することをお勧めします (REST サービスではなく Web ページの場合)。
Spring のセキュリティをテストするには、おそらくSecurityContextHolder
. ここで現在のユーザーの詳細を確認できるため、(Mockito や EasyMock などのモック フレームワークを使用して) モックを作成し、特定のユーザーとしてログインしているように見せることもできます。詳細については、こちらを参照してください(また、特定のモック フレームワークを使用してそれを行う方法を示す回答もあります)。
コントローラーに関する私の回答と同じように、全体像をテストしたい場合は、統合テストを使用する必要があります (たとえば、Selenium を使用)。
REST サービス自体 (コントローラーではない) は、単体テストというよりも統合テストであるため、テストが難しくありません。これをテストする最善の方法は、REST クライアントを作成し (RESTEasy や Apache CXF などの JAX-RS フレームワークで実行できます)、REST クライアントで得られる結果をテストすることだと思います。
これは通常、REST サービスを JAX-RS (Spring MVC ではなく) で定義すると簡単に実行できますが、不可能ではありません。インターフェイスや追加のドメイン クラスを作成したくない場合は、Apache HttpClient を使用することもできます。また、使用方法の例を見つけましたhere。