3.4 自动测试初步《精通ASP.NET MVC 5》
概述
ASP.NET MVC 框架已被设计成易于建立自动测试,并易于采用诸如测试驱动开发(TDD)等的开发方法学。ASP.NET MVC 为自动化测试提供了一个理想平台。
从广义上讲,当今的 Web 应用程序开发者注重于两种自动化测试:
第一种是单元测试,这是以与应用程序其他部分相隔离的方式,制定并检验单个类行为(或其他小型代码单元)的方法。
第二种是集成测试,这是指定并检验多个组件,乃至包括整个 Web 应用程序,协同工作行为的方法。
单元测试便于创建和运行,当你在算法、业务逻辑获取其他后端基础结构上工作时,单元测试是十分精确的。
集成测试的价值在于它可以模拟用户与 UI 的交互,并可以覆盖应用程序所使用的整个技术堆栈,包括 Web 服务器和数据库。集成测试更便于在旧的特性中侦测新的 Bug,这称为“回归测试”。
3.4.1 理解单元测试
在 .NET 世界中,你可以在 Visual Studio 解决方案 中 创建一个独立的测试项目,以容纳各个测试套件。
项目的创建:第一次添加一个单元测试时会创建这个项目,或者在使用 “Internet 应用程序” 模板创建 MVC 项目时,由模板自动地建立测试项目。
一个测试套件是一个 C# 类,它定义了一组测试方法:每个方法对应于希望检验的一种行为。
一个测试项目可以包含多个这样的测试套件类。
形成单元测试狂热:
能够执行单元测试是使用 MVC 框架开发的好处之一,但它未必适合所有人。 (如果以前还没用过单元测试,建议不妨试一试,看看它是如何工作的)
笔者喜欢单元测试,并将其用于自己的项目,但并非如你想象的那样会用于所有项目。—— 笔者倾向于为那些难以编写的以及那些可能在部署中称为缺陷源的功能和特性,才会编写单元测试。
在这些情况下,单元测试有助于对所需的最好实现构建一些思想。
笔者发现,只需对测试有所考虑,便可以摒弃一些可能有潜在问题的思想 —— 在着手处理实际缺陷和瑕疵之前,就已经杜绝了这些不良思想。
也就是说,单元测试是一种工具,而不是教条。—— 只有自己才知道要做多少测试 和进行哪种测试。
3.4 自动测试初步《精通ASP.NET MVC 5》的更多相关文章
- 【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目 目录索引
索引 [无私分享:从入门到精通ASP.NET MVC]从0开始,一起搭框架.做项目(1)搭建MVC环境 注册区域 [无私分享:从入门到精通ASP.NET MVC]从0开始,一起搭框架.做项目(2)创建 ...
- 精通ASP.Net MVC 3 框架(第三版)学习笔记
精通ASP.Net MVC 3 框架(第三版)学习笔记 代码才是王道. http://pan.baidu.com/s/1pJyL1cn
- Artech的MVC4框架学习——第一章初步认识ASP.NET MVC
前言: Artech觉得掌握ASP.NET MVC具有三个层次. 第一层了解基本的编程模式,掌握Controller和View的定义方式,知道路由如何注册以及验证规则如何定义. 第二个层次要求我们对A ...
- 第 4 章—— C# 语言特性(《精通 ASP.NET MVC 5》)
这里只提供各个特性的简单概括. C# 的完整指南可参阅<Introducing Visual C#>.深度了解 LINQ 可参考<Pro LINQ in C#> 4.1 准备示 ...
- 【开源分享:入门到精通ASP.NET MVC+EF6+Bootstrap】从这里开始,一起搭框架(1)开篇介绍
框架简介 这几年一直在做ASP.NET开发,几年前做项目都是老老实实一行行的写代码,后来发现那些高手基本都会有自己积累起来的代码库,现在称之为开发框架,基础代码不用再去堆,主要精力可以集中在业务逻辑实 ...
- 精通 ASP.NET MVC 4 学习笔记(一)
这里记录着从 P132 到 P192 的内容.水分很足,大部分是书上的代码,我只加了一些基于我自己的理解的能帮助初学者看懂的注释,并且把书中的部分内容做了一些的拓展. 建立数据层 设置 DI 容器 / ...
- 3.3 建立松耦合组件(MVC 模式最重要的特性之一是它支持、关注“分离”)《精通 ASP.NET MVC 5》 推荐指数:8 星半
笔者通常希望应用程序中的组件尽可能独立,而只有很少几个可控的依赖项.—— 在理想情况下,每个组件都不了解其他组件,而只是通过抽象接口来处理应用程序的其他区域.这称为松耦合 .—— 它能够使应用程序更易 ...
- 使用整体模型模板辅助器 Using Whole-Model Templated Helpers 模板辅助器方法 精通ASP.NET MVC 5
怎么会
- Creating Form Elements --Using BeginForm and EndForm 使用内建的Form辅助器方法 精通ASP.NET MVC 5
Using the BeginForm and EndForm Helper Methods in the CreatePerson.cshtml File
随机推荐
- Docker学习资源
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口. ...
- spoj 1029 Matrix Summation
题意: 对一个矩阵有2种操作: 1.把某个元素设为x. 2.查询以(x1,y1)为左上角 以(x2,y2)为右上角的矩阵中的数字的和. 思路: 二维树状数组入门题,同时对横坐标和纵坐标做前缀和就行了. ...
- arcgis for js 根据多边形自动缩放
交代背景:多边形已经渲染在图层上,然后根据多边形自动缩放值合适的大小: 思路:获取图层信息,获取图层中的几何信息,获取图形范围信息,在地图上设置范围:(下面的方法有封装)记一下思路就好 var pol ...
- linux下的CPU、内存、IO、网络的压力测试
linux下的CPU.内存.IO.网络的压力测试 要远程测试其实很简单了,把结果放到一个微服务里直接在web里查看就可以了,或者同步到其他服务器上 一.对CPU进行简单测试: 1.通过bc命令计算特 ...
- 解决pycharm左侧项目文件名中文字体乱码情况?中文显示口口口口.
解决pycharm左侧项目文件名中文字体乱码情况?中文显示口口口口. 点击file,进入settings 出现 Appearance & Behavior 点击Appearance UI Op ...
- 移动端与pc端如何用localStorage实现历史纪录?
1.使用jq完成localStorage实现历史纪录版. 代码如下: <!DOCTYPE html> <html> <head lang="en"&g ...
- mysql时间相加函数DATE_ADD()
mysql中的DATE_ADD()函数 1.定义:函数向日期添加指定的时间间隔. 2.语法:DATE_ADD(date,INTERVAL expr type) date 参数是合法的日期表达式.exp ...
- LeetCode Weekly Contest 121
上周因为感冒没有刷题,两个星期没有刷题,没手感了,思维也没有那么活跃了,只刷了一道,下个星期努力. 984. String Without AAA or BBB Given two integers ...
- cf C题
题意:矩阵只包含0,1两种数字,给你一个矩阵A,另一个矩阵B,每一次可以从A中选出一个子矩阵,点击一次使得这个子矩阵的四个角的数字变成与原来相反的数,0变1,1变0.问你可不可以经过有限次的变换把矩阵 ...
- POJ1192最优连通子串----树形dp
中文题面,目的很明显,把相邻的两个点看成是两个点之间有一条边,就能当成树形dp来做了. 用一遍dfs可以找出最大的子树权值和. #include<iostream> #include< ...