Visual Studio 2008单元测试实践

发表于:2009-05-21来源:作者:点击数: 标签:实践单元StudioVisualvisual
单元测试 是在软件 开发 过程中要进行的最低级别的测试活动,在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。 在一种传统的结构化编程语言中,比如C,要进行测试的单元一般是函数或子过程。在象C++这样的 面向对象 的语言中
单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。

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

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

  Visual Studio 2008 单元测试功能介绍

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

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

  2.测试代码的自动生成

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

  3.测试管理

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

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

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


Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->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;
        }
    }
}

 

原文转自:http://www.ltesting.net