0

私は現在、SpringMVCを使用してRESTWebサービスを開発しています。

そして、WSで統合テストを行うための最良の方法を見つけるのに苦労しています。

最初の解決策:安心して使用する

  • 利点:流暢なAPI、クールなDSLで本当に使いやすい
  • 欠点:WSでPOSTまたはPUT要求を実行すると、データベースの状態が変更され、次のテストが破損します。

2番目の解決策:コントローラーを単体テストし、サービスレベルで統合テストを個別に実行します

  • 利点:Spring Test Frameworkを使用してデータベースの状態を制御し、各テストの後にロールバックを実行できます
  • 短所:エンドツーエンドの統合テストを実行しなくなりました。

質問:データベースの状態を変更せずに、安心して統合テストを実行するにはどうすればよいですか?

どうもありがとう。

4

3 に答える 3

1

すべてのテストの前に安心のダブルとリダイレクトを削除して、テスト用に新しく設定してみませんか?

    RestClient.delete "#{RestAssured::Server.address}/redirects/all"
    RestClient.delete "#{RestAssured::Server.address}/doubles/all"

または、代わりに、GET および POST/PUT 呼び出しに異なる double を使用して、安心してこれらの呼び出しの間にリダイレクトを使用することもできます。

于 2012-09-18T15:39:46.553 に答える
0

よくわかりませんが、あなたの要求はあなたが述べているように理にかなっています。

RestAssured は、テストをサポートする単なるフレームワークです。また、PUT および DELETE (基本的には内部実装) に相当する単体テストを作成して、データベースの状態を変更することもできます。

または、RestAssured を使用して HEAD および GET リクエストのみを発行し、これによってデータベースの状態を変更することはできません。

どちらのオプションも、更新を省略した場合、コード パスの一部のみをテストするため、問題は RestAssured または手書きの単体テストの選択と直交しています。

もちろん、バックエンドをモックすることはできますが、モックは取るに足らないものであり、何の洞察も得られません。または、それらは複雑であり、モックオブジェクトが実行していると思われるものであることを保証するために個別のテストが必要になります。

于 2012-12-20T21:00:27.093 に答える
0

REST Spring MVC Web サービスで統合テストを実行するために、SpringSource チームは spring-test-mvc と呼ばれる新しいライブラリを提供しました。これは現在 spring-test に統合されています。

http://blog.springsource.org/2012/11/12/spring-framework-3-2-rc1-spring-mvc-test-framework/

私の特別な目的のために、それはRest-Assuredよりも適応しています.

于 2013-01-01T16:45:58.543 に答える