Maison >Java >javaDidacticiel >Nouveau mouvement Java : développement piloté par les tests 3 ---enregistrement des utilisateurs

Nouveau mouvement Java : développement piloté par les tests 3 ---enregistrement des utilisateurs

黄舟
黄舟original
2016-12-30 13:11:241270parcourir

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;
Spécifique La fonction de traitement est la suivante :

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 + "!");  
    }
Exécutez le scénario de test, puis ouvrez d:/ablog/app.html, vous constaterez que le nom d'utilisateur a été imprimé sur le déposer.


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 Map994a833a6ffa28d85b72cb15422c29d6. La page en récupère simplement la valeur, puis. l'imprime sur la page. Par conséquent, nous pouvons déterminer automatiquement si le développement de notre fonction est correct en vérifiant le contenu stocké dans Map994a833a6ffa28d85b72cb15422c29d6.

D'accord, implémentons d'abord cette fonctionnalité. Dans MainServlet.registerUser, définissez le modèle Map994a833a6ffa28d85b72cb15422c29d6 et ajoutez-le à la requête. Le code est le suivant :

Map<String, Object> model = new HashMap<String, Object>();  
        long userId = 101;  
        model.put("userId", "" + userId);  
        request.setAttribute("model", model);
Dans le cas de test, nous testons si la valeur userId est correctement définie, le code Comme indiqué ci-dessous :

Map<String, Object> model = (Map<String, Object>)request.getAttribute("model");  
            if (model.get("userId") != null && Long.parseLong("" + model.get("userId"))==101) {  
                rst = true;  
            }
À ce moment-là, nous constaterons que l'exécution du scénario de test échoue ! Ceci est normal car les méthodes getAttribute et setAttribute ne sont pas implémentées dans notre objet HttpJunitRequest. Pour que le scénario de test réussisse, nous devons ajouter le code suivant à HttpJunitRequest :

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);  
    }
Réexécutez le scénario de test. à ce moment-là, le panneau pass vert qui nous rend heureux peut enfin être affiché.


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.

Ce qui précède est le contenu du nouveau mouvement Java : Test Driven Development 3 --- enregistrement des utilisateurs Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn