MVC中的测试驱动开发
为什么需要TDD
TDD的由来
它是一种实现代码的方法论而不是一种测试方法
-代码的质量更可靠
TDD的工作方式
-首先编写单元测试
-编写代码用于通过测试
-重构代码
-迭代
编写测试代码
[Test]
public void
StringWithThreeAsReturnsThreeWhenCountingOccurencesOfA() {
//arrange
CharCounter counter = new CharCounter();
//act
int occurrences =
counter.CountOccurrences(“this phrase has three occurrences of a.”, ‘a’);
//assert
Assert.AreEqual(3, occurrences);
}
先写测试
编写应用代码
public int CountOccurrences(string text, char
searchCharacter)
{
int count = 0;
foreach (char character in text) {
if (character == searchCharacter) {
count++;
}}
return count;
}
//代码简单
重构上面的代码
-重构来精简代码
迭代
-重复上面的过程
编写好的单元测试代码
-测试技巧
1) 不要越界
-使代码测试工作帮助函数进行定位
2)默认单元测试
-自动生成
ViewData[“Message”] = “Welcome to ASP.NET MVC!”;
return View();
}
public void Index() {
// Arrange
HomeController controller = new HomeController();
// Act
ViewResult result = controller.Index() as ViewResult;
// Assert
ViewDataDictionary viewData = result.ViewData;
Assert.AreEqual(“Welcome to ASP.NET MVC!”, viewData[“Message”]);
}
3)单元测试要简洁
-只测试自己写的代码
public ActionResult About()
{
return View();
}
[TestMethod]
public void AboutReturnsAboutView()
{
HomeController controller = new HomeController();
ViewResult result = controller.About() as ViewResult;
Assert.AreEqual(“About”, result.ViewName);
} //不能通过
[TestMethod]
public void AboutReturnsAboutView()
{
HomeController controller = new HomeController();
ViewResult result = controller.About() as ViewResult;
//I explicitly want to rely on the framework to set the viewname
Assert.AreEqual(string.Empty, result.ViewName);
}
只测试自己写的代码
使用TDD的好处
-测试目标明确
-测试文档化
-测试安全
-测试提升质量
TDD推荐参考
-Test Driven Development
-Test-Driven Developmenet in Microsoft.net
2011-4-23 12:14 danny
为什么需要TDD
TDD的由来
它是一种实现代码的方法论而不是一种测试方法
-代码的质量更可靠
TDD的工作方式
-首先编写单元测试
-编写代码用于通过测试
-重构代码
-迭代
编写测试代码
[Test]
public void
StringWithThreeAsReturnsThreeWhenCountingOccurencesOfA() {
//arrange
CharCounter counter = new CharCounter();
//act
int occurrences =
counter.CountOccurrences(“this phrase has three occurrences of a.”, ‘a’);
//assert
Assert.AreEqual(3, occurrences);
}
先写测试
编写应用代码
public int CountOccurrences(string text, char
searchCharacter)
{
int count = 0;
foreach (char character in text) {
if (character == searchCharacter) {
count++;
}}
return count;
}
//代码简单
重构上面的代码
-重构来精简代码
迭代
-重复上面的过程
编写好的单元测试代码
-测试技巧
1) 不要越界
-使代码测试工作帮助函数进行定位
2)默认单元测试
-自动生成
ViewData[“Message”] = “Welcome to ASP.NET MVC!”;
return View();
}
public void Index() {
// Arrange
HomeController controller = new HomeController();
// Act
ViewResult result = controller.Index() as ViewResult;
// Assert
ViewDataDictionary viewData = result.ViewData;
Assert.AreEqual(“Welcome to ASP.NET MVC!”, viewData[“Message”]);
}
3)单元测试要简洁
-只测试自己写的代码
public ActionResult About()
{
return View();
}
[TestMethod]
public void AboutReturnsAboutView()
{
HomeController controller = new HomeController();
ViewResult result = controller.About() as ViewResult;
Assert.AreEqual(“About”, result.ViewName);
} //不能通过
[TestMethod]
public void AboutReturnsAboutView()
{
HomeController controller = new HomeController();
ViewResult result = controller.About() as ViewResult;
//I explicitly want to rely on the framework to set the viewname
Assert.AreEqual(string.Empty, result.ViewName);
}
只测试自己写的代码
使用TDD的好处
-测试目标明确
-测试文档化
-测试安全
-测试提升质量
TDD推荐参考
-Test Driven Development
-Test-Driven Developmenet in Microsoft.net
2011-4-23 12:14 danny
发表评论
-
10.2Asp.net MVC各层使用TDD方式
2011-05-01 12:09 763Asp.net MVC各层使用TDD方式 Asp.net M ... -
9、MVC程序安全限定
2011-04-29 22:14 1781常见网络安全攻击隐患 针对Asp.net MVC防御体系 安 ... -
8.2ASP.NET MVC2使用Ajax类库实例
2011-04-29 13:05 890ASP.NET MVC2使用Ajax类库实例 .net fo ... -
8.1Ajax类库介绍
2011-04-28 09:12 848在ASP.NET MVC中使用 -Microsoft ASP. ... -
7.2自定义开发Filter
2011-04-27 16:04 593Custom Filters ➤IAuthorization ... -
7.1Filter的使用
2011-04-26 22:20 470Filter的使用 -对Action的附加说明 Asp.n ... -
6.3Action的调用与属性
2011-04-26 09:43 634Action的调用与属性 1、唤起Action R ... -
6.2ActionResult的使用
2011-04-25 19:14 644ActionResult public abstract c ... -
6.1Controller类的基本构成
2011-04-25 09:17 637关于Controller Controller是什么? C ... -
5.6在Webform中使用routing
2011-04-23 22:48 627在Webform中使用routing 在Asp.net 4中使 ... -
5.5URL和Action匹配的秘密
2011-04-22 09:11 865Routes是如何把URL映射为Action -请求路由管道 ... -
5.4使用routing生成URL
2011-04-21 11:05 560使用routing生成URL URL生成器概述 1、质询每个 ... -
5.3使用Routes
2011-04-20 09:11 7105.3使用Routes 注册Area Route publi ... -
5.2Routes匹配URL的工作方式
2011-04-19 08:55 821URL的匹配规则 -site/{controller}/{ac ... -
5.1Url和Routes介绍
2011-04-17 12:05 6155.1Url和Routes介绍 关于Urls -域名好记好拼 ... -
4、View引擎介绍
2011-04-16 22:03 611View引擎介绍 Request =>Routing= ... -
3、HtmlHelper类(续)
2011-04-16 13:41 616HtmlHelper类(续) Html.TextArea 用 ... -
2、HtmlHelper类
2011-04-15 22:33 1066HtmlHelper类 <%Html. MVC1 & ... -
1、View层
2011-04-15 09:06 594ViewDataDictionary类 View 负责输出 ...
相关推荐
单元测试 TDD EASYMOCK 的一般用法说明 实例
LTE_TDD与LTE_FDD技术简介和比较
GSM TDD 板振说明及分析方法、解决方法总结
3GPP采用“求同存异”的原则进行L1E FDD和TDD的标准制定工作.将两种制式的协议实现在相同的规范中描述,并尽可能保证其协议实现相同,如遇到无法融合的差异,则仅针对差异部分进行分别描述。标准制定的这种指导思想...
华为LTE TDD系统原理培训PPT文档
Test Driven: Practical TDD and Acceptance TDD for Java Developers (PDF英文版)
C语言的TDD参考示例代码,主要包含了书中所参考的源代码
使用phpunit 一步一步使用tdd开发模式,减少bug数,提高项目质量
TDD测试驱动开发,准备的资料,我自己用的,公司只能上CSDN社区
GSM TDD noise 分析,但愿对GSM RF感兴趣的您有所帮助
测试驱动开发的艺术Test.Driven.TDD.and.Acceptance.TDD.for.Java.Developers
Laravel开发-tdd 时分双工
抑止TDD noise 的措施及解决方案
极限编程+TDD开发
Test.Driven.TDD.and.Acceptance.TDD.for.Java.Developers. 测试驱动开发方面相当好的一本书,值得下载
TDD(Test-Driven Development) 测试驱动开发是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD得原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD虽是敏捷方法...
我的博客 学习TDD(4)--实例2:基于ZooKeeper的服务器注册和探测类[实战ServerRegister]及 学习TDD(5)--实例2:基于ZooKeeper的服务器注册和探测类[实战ServerDetector] 的配套代码
TDD实战 - Test Driven Development in Action
关于TDD的认识和理解,非得要那么的字吗?我恶心了