zoukankan      html  css  js  c++  java
  • 使用 Visual Studio 2005 Team System 进行单元测试并生成用于 Unit Test Framework 的源代码 (实例)

    这是笔者在学习的过程中,曾经做的一个使用VSTS 2005 结合数据库库,做的一个Unit Test(单元测试)的Demo,为配合《使用 Visual Studio 2005 Team System 进行单元测试并生成用于 Unit Test Framework 的源代码 详解》理解和应用,整理出来,也为了加强自己的理解,为初学者提供一些资料。

    1. 新建一个空白解决方案,命名为"单元测试- 01"吧。

    2.在该解决方案下创建一个类库,作为此次单元测试的测试对象;我们就创建一个数学类(用于实现运算的简单类)。命名为" Jack.MathLib".

    (1). 在该类中创建一个类文件, 命名为" Math.cs ";

    (2). 实现一个加法运算的方法,编写如下代码:

    Code

    3. 现在为了测试该数序计算类中的方法,我们在该解决方案中添加一个测试项目,命名" Jack.MathLibTest ",创建方法如下:

    命名后,点击" 确定 ",Vs 将为你添加必要的文件和说明:如:

    (1)AuthoringTests.txt (Visual Studio Team System:创作和运行测试的概述 );

    (2)同时还为该项目引用了" Microsoft.VisualStudio.QualityTools.UnitTestFramework "程序集,

    4.右击该测试项目,添加一个单元测试,如下所示,该过程其实类似于《使用 Visual Studio 2005 Team System 进行单元测试并生成用于 Unit Test Framework 的源代码 详解》中,在某个类名上 右击选择"创建单元测试"是差不多的。

    (1) 添加一个单元测试:

     

    (2)根据向导,进行如下设置即可:

    (3)点击确定:VSTS将为你添加一个单元测试类文件, 代码如下:

      a). VSTS 同时将Jack.MathLib程序集添加到该项目的引用列表中:

      b). VSTS 同时也根据你要进行测试的类,提供了适当的代码:

    // 以下代码由 Microsoft Visual Studio 2005 生成。
    // 测试所有者应该检查每个测试的有效性。
    using Microsoft.VisualStudio.TestTools.UnitTesting;
    using System;
    using System.Text;
    using System.Collections.Generic;
    using Jack.MathLib;
    namespace Jack.MathLibTest
    {
        
    /// <summary>
        
    ///这是 Jack.MathLib.Math 的测试类,旨在
        
    ///包含所有 Jack.MathLib.Math 单元测试
        
    ///</summary>
        [TestClass()]
        
    public class MathTest
        {
            
    private TestContext testContextInstance;

            
    /// <summary>
            
    ///获取或设置测试上下文,上下文提供
            
    ///有关当前测试运行及其功能的信息。
            
    ///</summary>
            public TestContext TestContext
            {
                
    get
                {
                    
    return testContextInstance;
                }
                
    set
                {
                    testContextInstance 
    = value;
                }
            }
            
    #region 附加测试属性
            
    // 
            
    //编写测试时,可使用以下附加属性:
            
    //
            
    //使用 ClassInitialize 在运行类中的第一个测试前先运行代码
            
    //
            
    //[ClassInitialize()]
            
    //public static void MyClassInitialize(TestContext testContext)
            
    //{
            
    //}
            
    //
            
    //使用 ClassCleanup 在运行完类中的所有测试后再运行代码
            
    //
            
    //[ClassCleanup()]
            
    //public static void MyClassCleanup()
            
    //{
            
    //}
            
    //
            
    //使用 TestInitialize 在运行每个测试前先运行代码
            
    //
            
    //[TestInitialize()]
            
    //public void MyTestInitialize()
            
    //{
            
    //}
            
    //
            
    //使用 TestCleanup 在运行完每个测试后运行代码
            
    //
            
    //[TestCleanup()]
            
    //public void MyTestCleanup()
            
    //{
            
    //}
            
    //
            #endregion


            
    /// <summary>
            
    ///Add (int, int) 的测试
            
    ///</summary>
            [TestMethod()]
            
    public void AddTest()
            {
                Math target 
    = new Math();

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

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

                
    int expected = 0;
                
    int actual;

                actual 
    = target.Add(x, y);

                Assert.AreEqual(expected, actual, 
    "Jack.MathLib.Math.Add 未返回所需的值。");
                Assert.Inconclusive(
    "验证此测试方法的正确性。");
            }

        }
    }

    5. 这里我采用数据库,为测试提供适当数据。

    (1)在测试项目中添加一个Config文件,命名为 “App.config”,添加如下代码:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        
    <configSections>
            
    <section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
        
    </configSections>
        
    <connectionStrings>
            
    <add name="MyJetConn" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.mdb; Persist Security Info=False;" providerName="System.Data.OleDb" />
            
    <add name="MyExcelConn" connectionString="Dsn=Excel Files;dbq=data.xlsx;defaultdir=.; driverid=790;maxbuffersize=2048;pagetimeout=5" providerName="System.Data.Odbc" />
        
    </connectionStrings>
        
    <microsoft.visualstudio.testtools>
            
    <dataSources>
                
    <add name="MyJetDataSource" connectionString="MyJetConn" dataTableName="MyTable" dataAccessMethod="Sequential"/>
                
    <add name="MyExcelDataSource" connectionString="MyExcelConn" dataTableName="Sheet1$" dataAccessMethod="Sequential"/>
            
    </dataSources>
        
    </microsoft.visualstudio.testtools>
    </configuration>

     这里提供了两种测试数据源如“Sql server” 和“Access”;我们以Access为例。

    (2)创建一个Access文件(data.xlsx, 与App.config文件中的数据源路径保持一致),并添加适当数据:

    (3)修改该测试类(“MathTest.cs”)的代码:

    Code

     需要注意的就是:

             [DataSource("MyJetDataSource")] 的使用。

    (4) 设置测试项目为"启动项目",点击" 启动选定的测试项目(不调试)"

    在VSTS下面,可以看到他的测试进程

  • 相关阅读:
    Redis之scan
    MySQL中查看Blob类型的字段内容
    Redis之布隆过滤器BloomFilter
    Redis中的位图结构
    Redis之GeoHash根据经纬度距离排序
    .net 手写实现一个简单实体数据验证
    GogsWindows Server下配合Jenkins自动化发布
    C#的winform控件命名规范[转载]
    GogsWindows Server下搭建Git服务器
    Jenkins构建基于.NET Framework的web程序
  • 原文地址:https://www.cnblogs.com/Dlonghow/p/1279603.html
Copyright © 2011-2022 走看看