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

黄舟
Libérer: 2016-12-30 13:11:24
original
1241 Les gens l'ont consulté

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);
	}
Copier après la connexion

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;
Copier après la connexion
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 + "!");  
    }
Copier après la connexion
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 Map. 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 Map.

D'accord, implémentons d'abord cette fonctionnalité. Dans MainServlet.registerUser, définissez le modèle Map 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);
Copier après la connexion
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;  
            }
Copier après la connexion
À 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);  
    }
Copier après la connexion
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 (m.sbmmt.com) !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal