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

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

1、建立单元测试项目

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

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

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

  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.cs和ProgramTest.cs

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

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

(6)ProgramTest.cs代码文件详讲

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

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

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

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

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

double actual;

这两句话浅显易懂,前一句话是定义了期望值和对它进行初始化,后一句话是定义了实际值。默认

Assert.AreEqual(expected, actual);

Assert在这里可以理解成断言:在VSTS里做单元测试是基于断言的测试。

默认代码中Assert.Inconclusive表明这是一个未经验证的单元测试。在实际的程序中可以注释掉。

[转]Visual Studio 2010单元测试(1)--运行和定义普通单元测试的更多相关文章

  1. Microsoft Visual Studio 2010(vs10)安装与使用

    安装1.下载软件: 云盘分享http://pan.baidu.com/s/1i4JL9GT 2.安装 打开Microsoft Visual Studio 2010目录,双击setup.exe ,运行 ...

  2. Visual Studio 2010 单元测试之一---普通单元测试

    原文:Visual Studio 2010 单元测试之一---普通单元测试 本文以Visual Studio 2010为例,来介绍如何在Visual Studio里面进行单元测试. 首先来介绍普通单元 ...

  3. Visual Studio 2010 单元测试--运行测试并查看代码覆盖率

    原文:Visual Studio 2010 单元测试--运行测试并查看代码覆盖率 运行测试并查看代码覆盖率对程序集中的代码运行测试时,可以通过收集代码覆盖率数据来查看正在测试的项目代码部分. 运行测试 ...

  4. [转]Visual Studio 2010单元测试(2)--运行测试并查看代码覆盖率

    Visual Studio 2010 单元测试--运行测试并查看代码覆盖率 运行测试并查看代码覆盖率对程序集中的代码运行测试时,可以通过收集代码覆盖率数据来查看正在测试的项目代码部分. 运行测试并查看 ...

  5. [转]Visual Studio 2010 单元测试目录

    Visual Studio 2010 单元测试共分七个部分: 普通单元测试.顺序单元测试.压力测试,Generic测试.数据库测试.UI界面测试和Web性能测试. 这个系列的博客实例程序可以在下面的链 ...

  6. Visual Studio 2010 单元测试目录

    单元测试的重要性这里我就不多说了,以前大家一直使用NUnit来进行单元测试,其实早在Visual Studio 2005里面,微软就已经集成了一个叫Test的专门测试插件,经过几年的发展,这个工具现在 ...

  7. [入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二)

    [入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二) Date  周六 10 一月 2015 By 钟谢伟 Category website develop ...

  8. [转]基于Visual Studio 2010 进行敏捷/Scrum模式开发

    http://www.infoq.com/cn/articles/visual-studio-2010-agile-scrum-development 根据Forrester Research今年第二 ...

  9. [入门级] visual studio 2010 mvc4开发,用ibatis作为数据库访问媒介(一)

    [入门级] visual studio 2010 mvc4开发,用ibatis作为数据库访问媒介(一) Date  周二 06 一月 2015 By 钟谢伟 Tags mvc4 / asp.net 示 ...

随机推荐

  1. php 垃圾回收机制 转载

    PHP的基本GC概念PHP语言同其他语言一样,具有垃圾回收机制.那么今天我们要为大家讲解的内容就是关于PHP垃圾回收机制的相关问题.希望对大家有所帮助.PHP strtotime应用经验之谈PHP m ...

  2. php 数据导出到excel 2种带有合并单元格的导出

    具体业务层面 可能会有所不同.以下两种方式涉及的合并单元格地方有所不同,不过基本思路是一致的. 第一种是非插件版本.可能更容易理解点,基本思路就是 组装table 然后 读取 输出到excel上.缺点 ...

  3. Windows 开启win32 控制台

    {     AllocConsole();     FILE *Journal = NULL;     freopen_s(&Journal, "CONOUT$", &qu ...

  4. python截图+百度ocr(图片识别)+ 百度翻译

    一直想用python做一个截图并自动翻译的工具,恰好最近有时间就在网上找了资料,根据资料以及自己的理解做了一个简单的截图翻译工具.整理一下并把代码放在github给大家参考.界面用python自带的G ...

  5. duilib教程之duilib入门简明教程7.XML基础类

    现在大家应该对XML描述界面不那么陌生了,那么我们做进一步介绍. 前面的教程我们写了很多代码,为的是让大家了解下基本流程,其实duilib已经对常用的操作做了很好的包装,正式使用时无需像前面的教程那样 ...

  6. Http学习(二)

    使用首部字段是为了给浏览器和服务器提供报文主体大小.所使用语言.认证信息等 4种首部字段类型 通用首部字段 请求首部字段 响应首部字段 实体首部字段 详细说明: HTTP首部字段类型 通用首部字段: ...

  7. day25-静态、组合、继承

    #!/usr/bin/env python # -*- coding:utf-8 -*- # ----------------------------------------------------- ...

  8. Han Xin and His Troops(扩展中国剩余定理 Python版)

    Han Xin and His Troops(扩展中国剩余定理 Python版) 题目来源:2019牛客暑期多校训练营(第十场) D - Han Xin and His Troops 题意:   看标 ...

  9. 求一个n!中尾数有多少个零

    题目描述: 输入一个正整数n,求n!(即阶乘)末尾有多少个0? 比如: n = 10; n! = 3628800,所以答案为2 输入描述: 输入为一行,n(1 ≤ n ≤ 1000) 输出描述: 输出 ...

  10. 如何利用开源思想开发一个SEO友好型网

    如果你有一个网站需要去做SEO优化的时候,不要期望你的努力能立即得到回报.耐心等待并更正内容营销策略,最终会发现你的网站很受用户欢迎.下面就教你如何利用开源思维开发一个SEO友好型网站! 首先,你应该 ...