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 803Asp.net MVC各层使用TDD方式 Asp.net M ... -
9、MVC程序安全限定
2011-04-29 22:14 1809常见网络安全攻击隐患 针对Asp.net MVC防御体系 安 ... -
8.2ASP.NET MVC2使用Ajax类库实例
2011-04-29 13:05 922ASP.NET MVC2使用Ajax类库实例 .net fo ... -
8.1Ajax类库介绍
2011-04-28 09:12 883在ASP.NET MVC中使用 -Microsoft ASP. ... -
7.2自定义开发Filter
2011-04-27 16:04 623Custom Filters ➤IAuthorization ... -
7.1Filter的使用
2011-04-26 22:20 499Filter的使用 -对Action的附加说明 Asp.n ... -
6.3Action的调用与属性
2011-04-26 09:43 664Action的调用与属性 1、唤起Action R ... -
6.2ActionResult的使用
2011-04-25 19:14 681ActionResult public abstract c ... -
6.1Controller类的基本构成
2011-04-25 09:17 667关于Controller Controller是什么? C ... -
5.6在Webform中使用routing
2011-04-23 22:48 667在Webform中使用routing 在Asp.net 4中使 ... -
5.5URL和Action匹配的秘密
2011-04-22 09:11 899Routes是如何把URL映射为Action -请求路由管道 ... -
5.4使用routing生成URL
2011-04-21 11:05 597使用routing生成URL URL生成器概述 1、质询每个 ... -
5.3使用Routes
2011-04-20 09:11 7385.3使用Routes 注册Area Route publi ... -
5.2Routes匹配URL的工作方式
2011-04-19 08:55 850URL的匹配规则 -site/{controller}/{ac ... -
5.1Url和Routes介绍
2011-04-17 12:05 6475.1Url和Routes介绍 关于Urls -域名好记好拼 ... -
4、View引擎介绍
2011-04-16 22:03 647View引擎介绍 Request =>Routing= ... -
3、HtmlHelper类(续)
2011-04-16 13:41 650HtmlHelper类(续) Html.TextArea 用 ... -
2、HtmlHelper类
2011-04-15 22:33 1101HtmlHelper类 <%Html. MVC1 & ... -
1、View层
2011-04-15 09:06 627ViewDataDictionary类 View 负责输出 ...
相关推荐
5G AAS白皮书 2. Challenges Addressed by 5G Antenna Methods 3. Review of 4G Antennas ...10.1 Massive MIMO in TDD 10.2 Massive MIMO in FDD 11. 5G Support for Further Spatial Processing Enhancements
- 支持测试驱动开发(TDD)的方法论。 - 提供了断言机制来验证预期结果。 - 有助于提高代码质量和可维护性。 **1.9 Loki (模板库)** - **简介**:Loki 是一个实验性质的 C++ 模板库,尝试将设计模式等高级抽象...
10.1+ :check_mark: 不pe 依存关系 该库依赖于来向Spotify Web API发出请求。 对于不支持获取环境中,你需要提供一个以浏览器或给节点。 安装 $ npm install sdk-spotify --save 如何使用 ES6 // to import a ...
2.1 TDD Explained 2.2 Test-Driving “Hello World” II Building an Application 3 Getting Organized with MVC 3.1 Time Management with GetOrganized 3.2 Reading Data 3.3 Creating a To-Do 3.4 ...
- **测试驱动开发(TDD)**:先写测试用例,再编写实现,确保代码一开始就满足需求。 3. **如何做单元测试** - **编写测试用例**:为每个可测试的单元创建独立的测试用例,覆盖各种输入和预期输出。 - **使用测试...
* 802.16 宽带无线网络的两种分配带宽的方法:FDD 频分双工制、TDD 时分双工制 11. 操作系统: * Windows 2003 用户组:全局组、本地组、特殊组 * 用户权限:完全控制、用户访问、来宾访问 12. 网络路由协议: ...
10.1 Telecommunication-Management Architecture 279 10.1.1 Fault Management 280 10.1.2 Configuration Management 281 10.1.3 Performance Management 283 10.1.4 Roaming Management 284 10.1.5 Accounting ...
这部分介绍了支持WiMAX的关键技术,包括频分双工(FDD)和时分双工(TDD)等。这些技术有助于提高WiMAX的效率和性能。 ##### 8.4 WiMAX部署 这部分讨论了WiMAX技术在全球范围内部署的情况,包括不同国家和地区的...
TDD,RailsStyle 61 4.1 NowforaViewTest................... 61 4.2 TestingtheProjectView:ACascadeofTests .... 64 4.3 SoFar,SoGood..................... 70 II TestingApplicationData 71 5 ...