なぜ、Springブートガイドに2種類の統合テストが含まれているのか分かりませんか? (https://github.com/spring-guides/gs-spring-boot#add-unit-tests)なぜ、Springブートで異なるタイプの統合テストが行われるのですか?
TestRestTemplateと1つとMockMvc依存関係のあるものは1つですか?各テストタイプでは、スプリングブートはテスト環境をブートストラップします。だからこの分離の理由は何ですか?
なぜ、Springブートガイドに2種類の統合テストが含まれているのか分かりませんか? (https://github.com/spring-guides/gs-spring-boot#add-unit-tests)なぜ、Springブートで異なるタイプの統合テストが行われるのですか?
TestRestTemplateと1つとMockMvc依存関係のあるものは1つですか?各テストタイプでは、スプリングブートはテスト環境をブートストラップします。だからこの分離の理由は何ですか?
MockMvc
を使用すると、HTTPリクエストサイクルが偽装されたアプリケーションのインスタンスがテストされます。したがって、ここのテストスコープは、アプリケーションのMVCの側面に過ぎません。私はこれが典型的には "統合テスト"と呼ばれるとは思わないが、ユニットテストに近い(そのスコープは単一のクラスよりもかなり大きいが)。
TestRestTemplate
を使用すると、アプリケーションのリアルインスタンスがテストされているため、アプリケーションコンテキスト全体が「跳ね上がり」、外部のアクタとして呼び出されています。これは通常、「統合テスト」と呼ばれ、実際の使用に最も近いテストである可能性があります。
TestRestTemplate
で呼び出される「完全スタック」統合テストでは、MockMVC
テストで提供されるカバレッジのスーパーセットが提供されるため、MockMVC
テストでどうして迷惑をかけるのだろうかと疑問に思うかもしれません。もしそうなら、私はこれがの質問だと思う...
テストスコープ; MockMVC
テストケースは、通常、完全な統合テストよりも短時間で簡単に実行できます(アプリケーションのコンテキストを使用しないため)。さらに、彼らはあなたのアプリケーションコンテキストを使用していないので、テストでうまく動かないアプリケーションコンテキストのリアルアプリケーションの側面を模倣するのは難しいように動作する必要はありません。
使いやすさ; MockMVC
には、HTTPステータスのアサート、JSONレスポンスに対する問い合わせ、アサートなどのための静的ヘルパーが付属しています。もちろん、YMMMVですが、多くの人にとって、これらは容易に開発でき、読みやすいテストケースを実現するのに役立ちます。すべての呼び出しのためのすべてのマッピング、幸せと悲しいパスを含む全体のコントローラ層の詳細なテストのための
MockMVC
テスト:実際には、あなたはおそらく、両方のアプローチを組み合わせて使用することをお勧めしますHTTPステータスコード、コンテンツ本体などに深いアサーションを追加
TestRestTemplate
ユーザーの視点から表現されるメインフローのテストユーザーが/参照に興味があるのビットに焦点を当てたアサーションとSave a new Foo
、Search for all Foos
、Submit an invalid Foo update
など。
は、詳細な説明をありがとう!私が確認できない唯一のことは、MockMVCテストがより速いことです。それはまったく同じ時間がかかる(私のマシン上で) – DimarZio