Le développement piloté par les tests (TDD) n'est en réalité pas un concept nouveau, mais l'essence de cette méthodologie est souvent mal comprise. Dans mon cas, je pense que le développement piloté par les tests signifie écrire des tests unitaires pour tester complètement le code. En fait, c'est l'un des malentendus les plus courants concernant le développement piloté par les tests. Le développement piloté par les tests met non seulement l'accent sur les tests, mais également sur le développement piloté. Le but de l'écriture de cas de test n'est pas seulement des tests, mais aussi une conception, une conception de fonctions et d'interfaces, et une conception du point de vue des utilisateurs de fonctions ou d'interfaces, tandis que la conception dans d'autres méthodologies est une conception du point de vue d'un développeur, donc le développement piloté par les tests est plus propice à la production de bonnes conceptions.
Mais il ne suffit pas de simplement concevoir en testant et en exécutant des tests pour garantir la qualité du code pour produire des produits logiciels de haute qualité. Le développement piloté par les tests met également l'accent sur la refactorisation, ce qui signifie refactoriser les parties déraisonnables du code, et cette refactorisation doit être effectuée chaque fois que nous écrivons des tests, développons et vérifions le processus. Puisqu'il existe des cas de test pour le garantir, nous pouvons l'être. Refactorez avec confiance et audace sans vous soucier des conséquences imprévues.
De retour dans notre projet, dans MainServlet, nous avons implémenté toute la logique métier, mais nous nous rendrons vite compte que si toute la logique applicative est écrite dans cette classe, cette classe deviendra Si elle devient un géant, elle finira par devenir impossible à maintenir, nous devons donc placer l'implémentation de la logique métier d'enregistrement des utilisateurs dans le module utilisateur. Comme vous pouvez le constater, nous avons commencé à reconstruire notre système.
Tout d'abord, nous créons le package utilisateur et créons la classe UserMngr sous ce package, car nous estimons qu'en plus de conserver les informations utilisateur de base, le module utilisateur doit également gérer les groupes d'utilisateurs, les niveaux d'utilisateurs, les points utilisateur. et d'autres informations. Il n'est pas nécessaire que l'appelant comprenne pleinement ces détails, nous utilisons donc ici le mode Façade et toutes les opérations sur l'utilisateur sont effectuées via UserMngr. Le code est le suivant :
public class UserMngr { public static long registerUser(Map<String, Object> userInfo) { return 101; } }
On voit que dans cette classe, on renvoie seulement une valeur et on ne fait rien, afin de vérifier rapidement que notre architecture reconstruite peut fonctionner spécifiquement. Des fonctionnalités pourront être ajoutées ultérieurement. De plus, vous devez faire attention aux éléments de paramètres. L'objet Map est utilisé ici, c'est-à-dire que les paramètres sont transmis dans un tableau similaire à PHP. Il est plus courant en Java de concevoir une classe d'objets de valeur à cet effet, mais cela entraîne souvent la définition de nombreuses classes d'objets de valeur, ou en raison du besoin de partage, un objet de valeur est très volumineux. Ici, Map est utilisé pour transmettre des paramètres. , ce qui élimine le besoin de tels problèmes.
Ajoutez le code pour appeler le module utilisateur dans le MainServlet ci-dessous :
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);*/ }
Exécutez le scénario de test ci-dessous et il devrait réussir. Cela prouve que ma reconstruction de l'architecture est réussie cette fois. .
Ce qui précède est le contenu du nouveau mouvement Java : développement piloté par les tests 3 --- enregistrement de l'utilisateur 2. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (m.sbmmt.com) !