私は Spring MVC プロジェクトに取り組んでおり、ソース ツリー内のさまざまなコンポーネントすべての単体テストを行っています。
たとえば、コントローラーHomeController
を挿入する必要があるLoginService
場合、単体テストではHomeControllerTest
、オブジェクトを通常どおり (Spring の外部で) インスタンス化し、プロパティを挿入します。
protected void setUp() throws Exception {
super.setUp();
//...
controller = new HomeController();
controller.setLoginService( new SimpleLoginService() );
//...
}
これは、各コンポーネントを分離されたユニットとしてテストするのに最適です-プロジェクトに数十のクラスがあることを除いて、クラスを作成し、それに対して成功したユニットテストを作成した後、Spring MVC コンテキストファイルを更新するのを忘れ続けます展開されたアプリケーションでの実際の接続。プロジェクトを Tomcat にデプロイし、接続されていない Bean から多数の NullPointer を見つけたときに、コンテキスト ファイルを更新するのを忘れていたことに気付きました。
だから、ここに私の質問があります:
これは私の最初の Spring プロジェクトです。私が行ったように、個々の Bean の単体テストを作成してから、2 番目のテスト スイート (統合テスト) を作成して、すべてが実際のアプリケーション コンテキストで期待どおりに機能することをテストするのは正常ですか? これに対する確立されたベストプラクティスはありますか?
さらに、単体テストを統合テストからどのように分離しますか? すべてのソース コードは
src
にあり、ユニット テストはにあります。統合テスト ケース用にtest
2 つ目のテスト フォルダ ( など) が必要ですか?test-integration
これは私の最初の Spring プロジェクトなので、他の人が通常この種のことをどのように行っているのか興味があります。車輪を再発明するのではなく、コミュニティの他のメンバーに尋ねます。