Le processus d'enregistrement de l'utilisateur consiste pour l'utilisateur à saisir son nom d'utilisateur et son mot de passe, puis à établir correctement les informations de base et les informations de compte de l'utilisateur dans la base de données.
Commençons par une étape simple. La première étape consiste à écrire un cas de test, à passer cmd=registerUser, userName=Yan Tao, puis à appeler le Servlet, et enfin dans d:/ablog/app. Le nom d'utilisateur reçu est réécrit dans le fichier HTML. Le premier nom est le code du test :
@Test public void testRegisterUser001() { HttpServletRequest request = new HttpJunitRequest(); Map<String, String[]>params = (Map<String, String[]>)request.getParameterMap(); String[] cmd = new String [1]; cmd[0] = "registerUser"; params.put("cmd", cmd); String[] userName = new String[1]; userName[0] = "y闫涛t"; params.put("userName", userName); MainServlet m = new MainServlet(); HttpServletResponse response = new HttpJunitResponse(); try { m.doGet(request, response); response.getWriter().close(); } catch (IOException | ServletException e) { // TODO Auto-generated catch block e.printStackTrace(); } assertTrue(1>0); }
Ce qui suit est le code pour réussir ce scénario de test. Tout d'abord, lorsque le MainServlet saute en fonction des paramètres de la commande, ajoutez le code suivant :
<🎜. >switch (cmd) { case "registerUser": registerUser(request, response); break;
private void registerUser(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { PrintWriter out = response.getWriter(); String userName = null; if (request.getParameter("userName") != null) { userName = request.getParameter("userName"); } out.print("userName=" + userName + "!"); }
Mais attendez, les étapes de test ci-dessus ne sont pas seulement non automatisées, mais aussi plus pratiques que d'ouvrir directement le navigateur pour accéder à l'URL, surtout lorsque la page renvoyée contient beaucoup de contenu. Nous devons donc transformer les cas de test ci-dessus afin qu'ils puissent être testés automatiquement. Comme vous pouvez le savoir dans l'article précédent, nous stockerons le contenu qui doit être affiché sur la page dans l'objet de requête, généralement sous la forme de Map
D'accord, implémentons d'abord cette fonctionnalité. Dans MainServlet.registerUser, définissez le modèle Map
Map<String, Object> model = new HashMap<String, Object>(); long userId = 101; model.put("userId", "" + userId); request.setAttribute("model", model);
Map<String, Object> model = (Map<String, Object>)request.getAttribute("model"); if (model.get("userId") != null && Long.parseLong("" + model.get("userId"))==101) { rst = true; }
private final Map<String, Object> attributes = new HashMap<String, Object>(); @Override public Object getAttribute(String key) { return attributes.get(key); } @Override public void setAttribute(String key, Object value) { attributes.put(key, value); }
Jusqu'à présent, nous avons essentiellement construit un système exécutable minimum et pouvons le développer selon le concept de TDD.
Comme le montre l'exemple ci-dessus, nous pensons d'abord à un scénario de test pour une petite fonction à chaque fois, puis codons pour essayer de réussir le scénario de test. Après avoir réussi le scénario de test, nous continuons à ajouter. de nouvelles fonctions. Chaque test, développement et vérification ne prend que 20 à 30 minutes. Le code écrit de cette manière a été essentiellement entièrement testé et la qualité du code peut être garantie dans une certaine mesure.