概述
ASP.NET MVC 框架已被设计成易于建立自动测试,并易于采用诸如测试驱动开发(TDD)等的开发方法学。ASP.NET MVC 为自动化测试提供了一个理想平台。
从广义上讲,当今的 Web 应用程序开发者注重于两种自动化测试:
第一种是单元测试,这是以与应用程序其他部分相隔离的方式,制定并检验单个类行为(或其他小型代码单元)的方法。
第二种是集成测试,这是指定并检验多个组件,乃至包括整个 Web 应用程序,协同工作行为的方法。
单元测试便于创建和运行,当你在算法、业务逻辑获取其他后端基础结构上工作时,单元测试是十分精确的。
集成测试的价值在于它可以模拟用户与 UI 的交互,并可以覆盖应用程序所使用的整个技术堆栈,包括 Web 服务器和数据库。集成测试更便于在旧的特性中侦测新的 Bug,这称为“回归测试”。
3.4.1 理解单元测试
在 .NET 世界中,你可以在 Visual Studio 解决方案 中 创建一个独立的测试项目,以容纳各个测试套件。
项目的创建:第一次添加一个单元测试时会创建这个项目,或者在使用 “Internet 应用程序” 模板创建 MVC 项目时,由模板自动地建立测试项目。
一个测试套件是一个 C# 类,它定义了一组测试方法:每个方法对应于希望检验的一种行为。
一个测试项目可以包含多个这样的测试套件类。
形成单元测试狂热:
能够执行单元测试是使用 MVC 框架开发的好处之一,但它未必适合所有人。 (如果以前还没用过单元测试,建议不妨试一试,看看它是如何工作的)
笔者喜欢单元测试,并将其用于自己的项目,但并非如你想象的那样会用于所有项目。—— 笔者倾向于为那些难以编写的以及那些可能在部署中称为缺陷源的功能和特性,才会编写单元测试。
在这些情况下,单元测试有助于对所需的最好实现构建一些思想。
笔者发现,只需对测试有所考虑,便可以摒弃一些可能有潜在问题的思想 —— 在着手处理实际缺陷和瑕疵之前,就已经杜绝了这些不良思想。
也就是说,单元测试是一种工具,而不是教条。—— 只有自己才知道要做多少测试 和进行哪种测试。