Heim  >  Artikel  >  Java  >  Neue Java-Bewegung: Testgetriebene Entwicklung 3 – Benutzerregistrierung

Neue Java-Bewegung: Testgetriebene Entwicklung 3 – Benutzerregistrierung

黄舟
黄舟Original
2016-12-30 13:11:241215Durchsuche

Der Benutzerregistrierungsprozess besteht darin, dass der Benutzer seinen Benutzernamen und sein Passwort eingibt und dann die grundlegenden Informationen und Kontoinformationen des Benutzers korrekt in der Datenbank eingibt.

Beginnen wir mit einem einfachen Schritt. Der erste Schritt besteht darin, einen Testfall zu schreiben, cmd=registerUser, userName=Yan Tao zu übergeben, dann das Servlet aufzurufen und schließlich d:/ablog/app einzugeben. Der empfangene Benutzername wird in die HTML-Datei zurückgeschrieben. Der erste Name ist der Testcode:

@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);
	}

Das Folgende ist der Code zum Bestehen dieses Testfalls. Wenn das MainServlet gemäß den Befehlsparametern springt, fügen Sie zunächst den folgenden Code hinzu:

switch (cmd) {  
        case "registerUser":  
            registerUser(request, response);  
            break;

Spezifisch Die Verarbeitungsfunktion lautet wie folgt:

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 + "!");  
    }

Führen Sie den Testfall aus und öffnen Sie dann d:/ablog/app.html. Sie werden feststellen, dass der Benutzername gedruckt wurde Datei.

Aber Moment, die oben genannten Testschritte sind nicht nur nicht automatisiert, sondern auch bequemer als das direkte Öffnen des Browsers, um auf die URL zuzugreifen, insbesondere wenn die zurückgegebene Seite viel Inhalt enthält. Daher müssen wir die oben genannten Testfälle transformieren, damit sie automatisch getestet werden können. Wie Sie aus dem vorherigen Artikel wissen, speichern wir den Inhalt, der auf der Seite angezeigt werden muss, im Anforderungsobjekt, normalerweise in Form von Map994a833a6ffa28d85b72cb15422c29d6. Die Seite erhält einfach den Wert daraus und dann druckt es auf der Seite. Daher können wir automatisch feststellen, ob unsere Funktionsentwicklung korrekt ist, indem wir den in Map994a833a6ffa28d85b72cb15422c29d6 gespeicherten Inhalt überprüfen.

Okay, lasst uns zuerst diese Funktion implementieren. Definieren Sie in MainServlet.registerUser das Map994a833a6ffa28d85b72cb15422c29d6-Modell und fügen Sie es der Anfrage hinzu. Der Code lautet wie folgt:

Map<String, Object> model = new HashMap<String, Object>();  
        long userId = 101;  
        model.put("userId", "" + userId);  
        request.setAttribute("model", model);

Im Testfall testen wir, ob der userId-Wert korrekt eingestellt ist. der Code Wie unten gezeigt:

Map<String, Object> model = (Map<String, Object>)request.getAttribute("model");  
            if (model.get("userId") != null && Long.parseLong("" + model.get("userId"))==101) {  
                rst = true;  
            }

Zu diesem Zeitpunkt werden wir feststellen, dass die Ausführung des Testfalls fehlschlägt! Das ist normal, da die Methoden getAttribute und setAttribute nicht in unserem HttpJunitRequest-Objekt implementiert sind. Damit der Testfall erfolgreich ist, müssen wir den folgenden Code zu HttpJunitRequest hinzufügen:

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);  
    }

Führen Sie den Testfall erneut aus Zu diesem Zeitpunkt kann endlich das grüne Passschild angezeigt werden, das uns glücklich macht.

Bisher haben wir grundsätzlich ein minimal lauffähiges System aufgebaut und können es nach dem Konzept von TDD entwickeln.

Wie aus dem obigen Beispiel ersichtlich ist, denken wir jedes Mal zuerst an einen Testfall für eine kleine Funktion und versuchen dann, den Testfall zu bestehen. Nachdem wir ihn bestanden haben, fügen wir weiterhin neue Funktionen hinzu . Jeder Test, jede Entwicklung und jede Verifizierung dauert nur 20 bis 30 Minuten. Der auf diese Weise geschriebene Code wurde grundsätzlich vollständig getestet und die Codequalität kann bis zu einem gewissen Grad garantiert werden.

Das Obige ist der Inhalt der New Java Movement: Test Driven Development 3 – Benutzerregistrierung. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn