`

10.1TDD简介

阅读更多
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


分享到:
评论

相关推荐

    5G AAS白皮书,不错

    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

    c++开发手册

    - 支持测试驱动开发(TDD)的方法论。 - 提供了断言机制来验证预期结果。 - 有助于提高代码质量和可维护性。 **1.9 Loki (模板库)** - **简介**:Loki 是一个实验性质的 C++ 模板库,尝试将设计模式等高级抽象...

    sdk-spotify:遵循“ JS com TDD naPrática”课程,创建了一个旨在研究JavaScript TDD的项目。

    10.1+ :check_mark: 不pe 依存关系 该库依赖于来向Spotify Web API发出请求。 对于不支持获取环境中,你需要提供一个以浏览器或给节点。 安装 $ npm install sdk-spotify --save 如何使用 ES6 // to import a ...

    Test-Drive ASP.NET MVC

    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 ...

    培训教材2—软件单元测试.pptx

    - **测试驱动开发(TDD)**:先写测试用例,再编写实现,确保代码一开始就满足需求。 3. **如何做单元测试** - **编写测试用例**:为每个可测试的单元创建独立的测试用例,覆盖各种输入和预期输出。 - **使用测试...

    软考网络工程师笔记

    * 802.16 宽带无线网络的两种分配带宽的方法:FDD 频分双工制、TDD 时分双工制 11. 操作系统: * Windows 2003 用户组:全局组、本地组、特殊组 * 用户权限:完全控制、用户访问、来宾访问 12. 网络路由协议: ...

    Introduction to 3G Mobile Communications

    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 ...

    LTE The Future of Mobile__ Broadband Technology.pdf

    这部分介绍了支持WiMAX的关键技术,包括频分双工(FDD)和时分双工(TDD)等。这些技术有助于提高WiMAX的效率和性能。 ##### 8.4 WiMAX部署 这部分讨论了WiMAX技术在全球范围内部署的情况,包括不同国家和地区的...

    Rails Test Prescriptions.pdf

    TDD,RailsStyle 61 4.1 NowforaViewTest................... 61 4.2 TestingtheProjectView:ACascadeofTests .... 64 4.3 SoFar,SoGood..................... 70 II TestingApplicationData 71 5 ...

Global site tag (gtag.js) - Google Analytics