测试驱动开发(TDD)其实不是一个新概念,但是这种方法论的实质经常被误解。以我为例,我觉得测试驱动开发就是写单元测试,对代码进行充分测试。其实这是一种对测试驱动开发的一种最常见的误解,测试驱动开发不仅仅是强调测试,其同时更强调驱动开发。编写测试用例的的目的不仅仅是进行测试,而且是一种设计,是对功能及接口的设计,而且是以功能或接口使用者的角度来进行设计,而其他方法学中的设计,则是在开发人员角度上的设计,因此测试驱动开发更有利于产生好的设计。
但是仅仅通过测试进行设计,运行测试来保证代码质量,还不足以产生高质量的软件产品。测试驱动开发同时还强调重构,就是对代码不合理的地方进行重构,而且这个重构在每次编写测试、开发、验证进程中都需要进行,由于有测试用例进行保证,我们可以放心大胆的进行重构,而不用担心会导致意想不到的后果出现。
回到我们的项目中,在MainServlet中,我们实现了全部的业务逻辑,但是我们很快就会意识到,如果所有应用逻辑都写到这个类中,那个这个类将变成一个巨无霸,最终会变得不可维护,因此我们需要将用户注册业务逻辑实现放到用户模块中去。大家可以看到,我们已经开始重构我们的系统了。
首先,我们建立user包,在该包下面建立UserMngr类,因为我们预估,用户模块除了维护用户基本信息外,还需要维护用户群组、用户级别、用户积分等信息,如果让调用者完全了解这些细节信息是没有必要的,因此我们在这里用了Facade模式,所有对用户的操作均通过UserMngr来进行。代码如下所示:
public class UserMngr { public static long registerUser(Map<String, Object> userInfo) { return 101; } }
我们看到,在这个类里,我们仅返回一个值,什么也没做,为的是快速验证我们的重构架构是可以工作的,具体功能可以在以后添加。另外,需要注意的是参数项,这里用的是Map对象,即以类似PHP中的数组来传递参数。在Java中更常见的作为是为此目的设计一个值对象类,但是这经常造成定义许多值对象类,或者由于共用的需要,一个值对象非常庞大,这里采用Map来传递参数省去了这样的麻烦。
下面在MainServlet中加入对用户模块调用的代码:
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);*/ }
下面运行测试用例,应该可以通过,这证明我这次对架构的重构是成功的。
以上就是新Java运动:测试驱动开发3---用户注册2的内容,更多相关内容请关注PHP中文网(www.php.cn)!

本文讨论了使用Maven和Gradle进行Java项目管理,构建自动化和依赖性解决方案,以比较其方法和优化策略。

本文使用Maven和Gradle之类的工具讨论了具有适当的版本控制和依赖关系管理的自定义Java库(JAR文件)的创建和使用。

本文讨论了使用咖啡因和Guava缓存在Java中实施多层缓存以提高应用程序性能。它涵盖设置,集成和绩效优势,以及配置和驱逐政策管理最佳PRA

本文讨论了使用JPA进行对象相关映射,并具有高级功能,例如缓存和懒惰加载。它涵盖了设置,实体映射和优化性能的最佳实践,同时突出潜在的陷阱。[159个字符]

Java的类上载涉及使用带有引导,扩展程序和应用程序类负载器的分层系统加载,链接和初始化类。父代授权模型确保首先加载核心类别,从而影响自定义类LOA


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

Atom编辑器mac版下载
最流行的的开源编辑器

记事本++7.3.1
好用且免费的代码编辑器

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

WebStorm Mac版
好用的JavaScript开发工具