关键字:单元测试,Visual Studio 2008

单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。

在一种传统的结构化编程语言中,比如C,要进行测试的单元一般是函数或子过程。在象C++这样的面向对象的语言中, 要进行测试的基本单元是类。对Ada语言来说,开发人员可以选择是在独立的过程和函数,还是在Ada包的级别上进行单元测试。单元测试的原则同样被扩展到第四代语言(4GL)的开发中,在这里基本单元被典型地划分为一个菜单或显示界面。

单元测试不仅仅是作为无错编码的一种辅助手段在一次性的开发过程中使用,单元测试必须是可重复的,无论是在软件修改,或是移植到新的运行环境的过程中。因此,所有的测试都必须在整个软件系统的生命周期中进行维护。

Visual Studio 2008 单元测试功能介绍

一、测试代码与被测代码分离成独立的两个项目

单元测试中,测试的代码不能对被测试的代码施加影响。如果将测试代码写入被测试的代码中,测试完成后再删除的话,测试的正确性将得不到保证。因此,在Visual Studio 2008种提供了一种“Test Project”的项目,测试代码写在Test Project中,并且测试工程可以进行重复使用。

二、测试代码的自动生成

书写测试代码是一件很烦琐的事情,这些代码没有像程序代码一样具有“创造性”,因此该部分代码可以进行自动化生成。Visual Studio 2008就提供了一个自动生成测试代码的测试框架。利用Visual Studio 2008自动生成的代码,只需要很少的改动就可以完成整个测试程序。

三、测试管理

Visual Studio 2008提供了测试列表来进行测试工作的管理工作,我们需要一个反映目前测试状况的工具,那些测试通过了,那些没有通过,应该提供一个列表来为我们改进测试手段,进行更全面的测试提供指导。

利用Visual Studio 2008来进行单元测试

假设我们有一个类BankAccount,该类定义了一个银行的账户,私有属性_currentBalance是银行储户的账户金额,depositMoney是存款方法,对帐户增加一笔资金,makePayment是支付方法,对账户减少一笔资金。代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace BankAccountDemo.Business

{

class BankAccount

{

private float _currentBalance;

public float CurrentBalance

{

get { return _currentBalance; }

set { _currentBalance = value; }

}

public BankAccount(float initialBalance)

{

this._currentBalance = initialBalance;

}

public void depositMoney(float depositAmount)

{

this._currentBalance += depositAmount;

}

public void makePayment(float paymentAmount)

{

this._currentBalance -= paymentAmount;

}

}

}

要对BankAccount类进行单元测试,只需要在BankAccount的定义处鼠标右键,在菜单中选择“Create Unit Tests”即可进入测试项目的创建工作。如下图所示:

在弹出的创建单元测试的对话框中,对需要创建测试的方法和属性进行选择,然后点击“OK”按钮,如图所示:

接着在出现的文本框中输入测试项目的名称“BankAccountDemo.Business.Tests”,点击确定后,测试项目被创建。在这里“BankAccountDemo.Business.”只是用于更好的对命名空间进行规划,完全可以直接使用“BankAccountDemoTest”来作为测试项目的名字。

生成的测试代码如下,为了紧凑的表现代码,将注释代码作了删除。

using BankAccountDemo.Business;

using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace BankAccountDemo.Business.Tests

{

[TestClass()]

public class BankAccountTest

{

private TestContext testContextInstance;

public TestContext TestContext

{

get

{

return testContextInstance;

}

set

{

testContextInstance = value;

}

}

#region Additional test attributes

#endregion

[TestMethod()]

public void CurrentBalanceTest()

{

float initialBalance = 0F; // TODO: Initialize to an appropriate value

BankAccount target = new BankAccount(initialBalance); // TODO: Initialize to an appropriate value

float expected = 0F; // TODO: Initialize to an appropriate value

float actual;

target.CurrentBalance = expected;

actual = target.CurrentBalance;

Assert.AreEqual(expected, actual);

Assert.Inconclusive("Verify the correctness of this test method.");

}

[TestMethod()]

public void makePaymentTest()

{

float initialBalance = 0F; // TODO: Initialize to an appropriate value

BankAccount target = new BankAccount(initialBalance); // TODO: Initialize to an appropriate value

float paymentAmount = 0F; // TODO: Initialize to an appropriate value

target.makePayment(paymentAmount);

Assert.Inconclusive("A method that does not return a value cannot be verified.");

}

[TestMethod()]

public void depositMoneyTest()

{

float initialBalance = 0F; // TODO: Initialize to an appropriate value

BankAccount target = new BankAccount(initialBalance); // TODO: Initialize to an appropriate value

float depositAmount = 0F; // TODO: Initialize to an appropriate value

target.depositMoney(depositAmount);

Assert.Inconclusive("A method that does not return a value cannot be verified.");

}

转自:http://www.51testing.com/html/index.html

转载于:https://www.cnblogs.com/junzhongxu/archive/2009/05/14/1456476.html

Visual Studio 2008单元测试实践一相关推荐

  1. Visual Studio 2008 单元测试

    开发组件的时候使用VS集成的单元测试功能会很方便 1.新建一个类库项目,并为其中的类添加一个方法,方法任意 之后右键点击代码窗口 选择方法 为新建项目命名 然后在解决方案管理中就多了相应的Test P ...

  2. Visual Studio 2008 和 .NET 3.5 发布了

    转自:http://blog.joycode.com/scottgu/archive/2007/11/20/111568.aspx [原文地址]Visual Studio 2008 and .NET ...

  3. Visual Studio 2010 单元测试之一---普通单元测试:http://blog.csdn.net/tjvictor/archive/2011/02/09/6175362.aspx...

    本文以Visual Studio 2010为例,来介绍如何在Visual Studio里面进行单元测试. 首先来介绍普通单元测试,这是进行顺序测试.压力测试的基础.如果在Visual Studio 2 ...

  4. 使用Visual Studio 2008 Express的C / C ++初学者调试指南

    介绍 (Introduction) 本文是有关C / C ++ Visual Studio Express调试器的系列文章中的第一篇. 它提供了使用调试器的快速入门指南. 第2部分重点介绍断点中的其他 ...

  5. Visual Studio 2008 到底有多强?漫画告诉你 !

      插入数据需要无数个SQL语句支持,而现在,你只需要有一个强大的LinQ巴士,就直接一次性全搞定,方便快捷 "  强大的中转站,帮你解决额外的问题,数据传输选择最优路径,完成工作.数据给了 ...

  6. [vs2008]Visual Studio 2008 SP1添加或删除功能提示查找SQLSysClrTypes.msi文件

    前言 今天接到领导布置的一个任务,是之前同事负责的项目.离职了,现在客户有些地方需要修改,由于我之前参与过,就落在我的头上了. 然后我就把代码弄了过来,打开发现其中需要用到水晶报表.(我觉得不好用,不 ...

  7. 第五篇:Visual Studio 2008 Web开发使用的新特性

    第五篇:Visual Studio 2008 Web开发使用的新特性 本篇翻译自MSDN. .NET Framwork 3.5与Visual Studio 2008 包含很多新特性.AJAX的Web开 ...

  8. Visual Studio 2008 Samples Page

    Visual Studio 2008 Samples Page http://msdn.microsoft.com/zh-cn/bb330936(en-us).aspx 如何实现 - 常规开发 htt ...

  9. LINQ to SQL 在 Visual Studio 2008 中的简单应用

    在.Net Framework 3.5 中,最激动人心的就是增加了LINQ功能,LINQ在数据集成的基础上提供了新的轻型方式.有了LINQ,我们创建的查询现在就编程了.Net 框架的一个成员,在对要操 ...

最新文章

  1. Laravel7使用Auth进行用户认证
  2. Python中MySQLdb的connect的用法
  3. Netbeans OpenGL使用
  4. Vue项目代码改进(二)—— element-UI的消息显示时间修改
  5. mysql 链式查询_MySQL的链接查询
  6. mac电脑LC_CTYPE: cannot change locale (UTF-8): No such file or directory
  7. 推特警告称开发者 API 密钥或遭泄露
  8. 本科毕业论文降低查重率小技巧
  9. 梦断A股:证监会发现了小米的违规之处
  10. 面试题心得--spring注解的原理
  11. RK3566调试外部以太网PHY
  12. 合肥盛荣乒乓球俱乐部学习感悟
  13. windows中SyncToy(微软同步工具) v2.1汉化版
  14. VC++ 中主线程等待子线程结束的方法
  15. 迷惑,不知何去何从。。。。。
  16. P2P常见名词的解释
  17. git 多分支添加备注、查看分支备注
  18. 【Codewars】<7kyu> Vowel Count
  19. iPhone微信浏览器中默认弹框alert去掉域名显示
  20. 项目管理sod_内部控制之“SOD”密

热门文章

  1. 关于华科的计算系统结构专业
  2. Hbase中的Column Family(转载)
  3. CodedInputStream encountered an embedded string or message which claimed to have negative size.
  4. 如何一次性复制带有markdown/mathjax/latex的博客内容
  5. ctrl+alt+T出来的终端窗口非常小
  6. leetcode:图相关算法
  7. 这些年微软相关的技术总结, Javascript在客户端的使用
  8. linux是否有免安装程序,在线Ubuntu Linux系统,免安装体验Linux系统
  9. TCP/IP协议基本概括+ARP协议详解+DNS协议详解---Linux学习笔记
  10. ubuntu中忘记root密码的解决方法