Visual Studio 2010单元测试(普通单元测试)

Visual Studio 2010运行和定义单元测试

VS2010中,单元测试的功能很强大,使得建立单元测试和编写单元测试代码,以及管理和运行单元测试都变得简单起来,通过私有访问器可以对私有方法也能进行单元测试,并且支持数据驱动的单元测试。

1、建立单元测试项目

1.1、从被测试代码生成单元测试

1)实例:创建VC#模式下的控制台应用程序,工程名为CUnitTest

2)输入简单的加、减、乘、除函数代码,如下图所示

[csharp] view plaincopy
  1. namespace CUnitTest  
  2. {  
  3.     class Program  
  4.     {  
  5.         public int Add(int a, int b)  
  6.         {  
  7.             return a + b;  
  8.         }  
  9.         public int Dec(int a, int b)  
  10.         {  
  11.             return a - b;  
  12.         }  
  13.         public int Mul(int a, int b)  
  14.         {  
  15.             return a * b;  
  16.         }  
  17.         public int Div(int a, int b)  
  18.         {  
  19.             return a / b;      
  20.         }  
  21.         static void Main(string[] args)  
  22.         {  
  23.         }  
  24.     }  
  25. }  


3)可按如下步骤建立单元测试

 1)在Add方法体内,单击鼠标右键,在菜单中选择“创建单元测试”,就能把一个类的测试代码的外壳都自动写好。

(2)在出现的“创建单元测试”界面中,Add方法被自动勾上,表示要为这个方法创建单元测试代码的基本框架,单击确定按钮

3)点击确定后,在新建测试项目中,输入需要创建的单元测试的新项目的名称,然后单击“创建”按钮,则自动创建一个新的单元测试代码项目。

4)在“解决档案资源管理器”中可以看到多了一个“AddTest”项目,可以看出“AddTest”项目引用了被测项目的程序集,和单元测试框架Microsoft.VisualStudio.QualityTools.UnitTestFrame,并且自动产生两个C#代码文件AssemblyInfo.csProgramTest.cs

5ProgramTest.cs的代码如下图所示,从图中可以看到,自动产生了一个“ProgramTest”类,并使用[TestClass()]标识为一个单元测试类,以及一个“AddTest”测试方法,。并用[TestMethod()]标识。

[csharp] view plaincopy
  1. using CUnitTest;  
  2. using Microsoft.VisualStudio.TestTools.UnitTesting;  
  3. using System;  
  4. namespace AddTest  
  5. {  
  6.       
  7.       
  8.     /// <summary>  
  9.     ///这是 ProgramTest 的测试类,旨在  
  10.     ///包含所有 ProgramTest 单元测试  
  11.     ///</summary>  
  12.     [TestClass()]  
  13.     public class ProgramTest  
  14.     {  
  15.   
  16.         private TestContext testContextInstance;  
  17.   
  18.         /// <summary>  
  19.         ///获取或设置测试上下文,上下文提供  
  20.         ///有关当前测试运行及其功能的信息。  
  21.         ///</summary>  
  22.         public TestContext TestContext  
  23.         {  
  24.             get  
  25.             {  
  26.                 return testContextInstance;  
  27.             }  
  28.             set  
  29.             {  
  30.                 testContextInstance = value;  
  31.             }  
  32.         }  
  33.  
  34.         #region 附加测试特性  
  35.         //   
  36.         //编写测试时,还可使用以下特性:  
  37.         //  
  38.         //使用 ClassInitialize 在运行类中的第一个测试前先运行代码  
  39.         //[ClassInitialize()]  
  40.         //public static void MyClassInitialize(TestContext testContext)  
  41.         //{  
  42.         //}  
  43.         //  
  44.         //使用 ClassCleanup 在运行完类中的所有测试后再运行代码  
  45.         //[ClassCleanup()]  
  46.         //public static void MyClassCleanup()  
  47.         //{  
  48.         //}  
  49.         //  
  50.         //使用 TestInitialize 在运行每个测试前先运行代码  
  51.         //[TestInitialize()]  
  52.         //public void MyTestInitialize()  
  53.         //{  
  54.         //}  
  55.         //  
  56.         //使用 TestCleanup 在运行完每个测试后运行代码  
  57.         //[TestCleanup()]  
  58.         //public void MyTestCleanup()  
  59.         //{  
  60.         //}  
  61.         //  
  62.         #endregion  
  63.   
  64.   
  65.         /// <summary>  
  66.         ///Add 的测试  
  67.         ///</summary>  
  68.         [TestMethod()]  
  69.         public void AddTest()  
  70.         {  
  71.             Program target = new Program(); // TODO: 初始化为适当的值  
  72.             int a = 0; // TODO: 初始化为适当的值  
  73.             int b = 0; // TODO: 初始化为适当的值  
  74.             int expected = 0; // TODO: 初始化为适当的值  
  75.             int actual;  
  76.             actual = target.Add(a, b);  
  77.             Assert.AreEqual(expected, actual);  
  78.             //Assert.Inconclusive("验证此测试方法的正确性。");  
  79.         }  
  80.   
  81.         /// <summary>  
  82.         ///Dec 的测试  
  83.         ///</summary>  
  84.         [TestMethod()]  
  85.         public void DecTest()  
  86.         {  
  87.             Program target = new Program(); // TODO: 初始化为适当的值  
  88.             int a = 0; // TODO: 初始化为适当的值  
  89.             int b = 0; // TODO: 初始化为适当的值  
  90.             int expected = 0; // TODO: 初始化为适当的值  
  91.             int actual;  
  92.             actual = target.Dec(a, b);  
  93.             Assert.AreEqual(expected, actual);  
  94.             //Assert.Inconclusive("验证此测试方法的正确性。"); //<span style="color:black;">语句是默认添加的,意思是这个方法是</span><span style="color:black;">Visual Studio</span><span style="color:black;">自动创建,运行前自删除或注释此句,否则运行结果无法通过。</span>  
  95.         }  
  96.     }  
  97. }  


6ProgramTest.cs代码文件详讲

[TestMethod()]:说明了以下代码是一个测试用例

Int a = 0; // TODO: 初始化为适当的值

int b = 0; // TODO: 初始化为适当的值

这两句是被测函数的输入参数,需要我们去修改它的值,也就是我们输入测试用例的地方。

double expected = 0; // TODO:初始化为适当的值

double actual;

      这两句话浅显易懂,前一句话是定义了期望值和对它进行初始化,后一句话是定义了实际值。默认Assert.AreEqual(expected, actual);Assert在这里可以理解成断言:在VSTS里做单元测试是基于断言的测试。默认代码中Assert.Inconclusive表明这是一个未经验证的单元测试。在实际的程序中可以注释掉。

引用中提到,Microsoft Visual Studio(简称VS)是一款开发工具,可以用来系统地开发软件,类似于Java开发工具IDEA。而引用中则说明了Visual Studio Code是一款代码编辑器,不能单独用来进行软件开发,但功能比普通的编辑器(例如Notepad)多。它只能在Windows和macOS上运行。从这两个引用中可以看出,Visio和Visual Studio是两款不同的工具。 Visio是一款流程图和图表制作工具,主要用于创建和编辑各种类型的图表,包括组织结构图、流程图、平面布局图等。它具有丰富的绘图库和模板,可以帮助用户轻松地创建专业的图表。 Visual Studio是一款强大的集成开发环境(IDE),用于开发各种类型的软件应用程序。它支持多种编程语言,如C++、C#、Java等,并提供了丰富的开发工具和调试功能,使开发者能够高效地编写、测试和部署软件。 因此,虽然Visio和Visual Studio都涉及到软件开发领域,但它们的功能和用途是不同的。Visio主要用于图表制作,而Visual Studio则是一个全面的开发工具,适用于各种软件开发任务。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Microsoft Visual StudioVisual Studio Code区别](https://blog.csdn.net/m0_66741725/article/details/127803844)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [适用于 Simulink S-Functions 的 Visual Studio.Net 自定义应用程序向导:用于在 Visual Studio.Net for ...](https://download.csdn.net/download/weixin_38663113/19318151)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值