ホームページ  >  記事  >  Java  >  新しい Java の動き: テスト駆動開発 3---ユーザー登録 2

新しい Java の動き: テスト駆動開発 3---ユーザー登録 2

黄舟
黄舟オリジナル
2016-12-30 13:13:111134ブラウズ

テスト駆動開発 (TDD) は実際には新しい概念ではありませんが、この方法論の本質は誤解されていることがよくあります。私の場合、テスト駆動開発とは、コードを完全にテストする単体テストを作成することだと思います。実際、これはテスト駆動開発に関する最も一般的な誤解の 1 つです。テスト駆動開発はテストを強調するだけでなく、ドライブ開発も強調します。テストケースを書く目的はテストだけではなく、設計、機能やインターフェースの設計、機能やインターフェースの利用者の視点からの設計でもありますが、他の手法における設計は開発者の視点からの設計です。したがって、テスト駆動開発は、優れた設計を生み出すのに役立ちます。

しかし、テストを通じて設計し、テストを実行してコードの品質を確保するだけでは、高品質のソフトウェア製品を作成するのに十分ではありません。テスト駆動開発では、コードの不合理な部分をリファクタリングするリファクタリングも重視されており、このリファクタリングはテスト作成、開発、検証の各プロセスで実行する必要があるため、それを保証するためのテストケースが存在します。意図しない結果を心配することなく、自信を持って大胆にリファクタリングします。

私たちのプロジェクトに戻り、MainServlet ですべてのビジネス ロジックを実装しましたが、すべてのアプリケーション ロジックをこのクラスに書き込むと、このクラスは巨大なものになることがすぐにわかります。そうしないと、最終的には保守できなくなります。ユーザー登録のビジネスロジック実装をユーザーモジュールに組み込みます。ご覧のとおり、システムの再構築が始まりました。

まず、ユーザー パッケージを作成し、このパッケージの下に UserMngr クラスを作成します。これは、ユーザー モジュールでは、基本的なユーザー情報に加えて、ユーザー グループ、ユーザー レベル、ユーザー ポイント、その他の情報も維持する必要があると考えられるためです。 caller これらの詳細を完全に理解する必要はないため、ここでは Facade モードを使用し、ユーザーに対するすべての操作は UserMngr を通じて実行されます。コードは次のとおりです。

public class UserMngr {  
    public static long registerUser(Map<String, Object> userInfo) {  
        return 101;  
    }  
}

このクラスでは、リファクタリングされたアーキテクチャが機能すること、および特定の関数を後で追加できることをすぐに検証するために、値を返すだけで何も行わないことがわかります。さらに、ここでは Map オブジェクトが使用されており、パラメータは PHP と同様に配列で渡されます。 Java では、この目的のために値オブジェクト クラスを設計することが一般的ですが、その結果、多くの値オブジェクト クラスを定義することになるか、共有する必要があるため、値オブジェクトが非常に大きくなります。ここでは、パラメータを渡すために Map が使用されます。 , そのような手間が省けます。

以下の MainServlet にユーザー モジュールを呼び出すコードを追加します。

private void registerUser(HttpServletRequest request, HttpServletResponse response) 
			throws IOException, ServletException {
		String userName = null;
		if (request.getParameter("userName") != null) {
			userName = request.getParameter("userName");
		}
		Map<String, Object> userInfo = new HashMap<String, Object>();
		userInfo.put("userName", userName);
		long userId = UserMngr.registerUser(userInfo);
		Map<String, Object> model = new HashMap<String, Object>();
		model.put("userId", "" + userId);
		request.setAttribute("model", model);
		/*this.getServletContext().getRequestDispatcher("/caporder/apply_capital.jsp")
			.forward(request, response);*/
	}

以下のテスト ケースを実行すると、今回のアーキテクチャの再構築が成功したことが証明されます。

上記は、新しい Java 運動: テスト駆動開発 3---ユーザー登録 2 の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。