zoukankan      html  css  js  c++  java
  • VS2010中的测试(3)——数据驱动单元测试

       当我们同一条测试用例根据不同的输入数据运行多次测试。为了不重复写单元测试代码。vs为我们提供了数据驱动的测试方法,数据源的文件格式可以是csv、xml、SQL Server数据库或者Orcle数据库等。

       我们先来看看我们要被测试的方法:

    using System;

    namespace ConsoleApplicationUnitTest
    {
    public class UnitTest
    {
    public double CalculateTotalPrice(double quantity)
    {
    double totalPrice;
    double unitPrice;
    unitPrice = 16.0;
    totalPrice = unitPrice * quantity;
    return totalPrice;
    }
    }
    }

    同样我们也是按照平常的方法创建一个单元测试,如下:

           /// <summary>
    ///CalculateTotalPrice 的测试
    ///</summary>
    [TestMethod()]
    public void CalculateTotalPriceTest()
    {
    UnitTest target = new UnitTest(); // TODO: 初始化为适当的值
    double quantity = 10.0F; // TODO: 初始化为适当的值
    double expected = 160F; // TODO: 初始化为适当的值
    double actual;
    actual = target.CalculateTotalPrice(quantity);
    Assert.AreEqual(expected, actual);
    //Assert.Inconclusive("验证此测试方法的正确性。");
    }

    下面我们创建一个测试用例的数据源,打开Excel,创建一个CSV文件。输入如下的数据行。然后保存为.csv文件。

    创建好数据源之后,我们就要转到测试工程中,然后打开测试视图或者测试列表编辑窗口。选中我们要连接的数据源的测试用例,右键属性,然后点击数据连接字符串,它会弹出一个连接向导,选择我们的CSV文件,然后选择刚刚保存的csv文件。选择完成之后,该测试用例的属性就会被使用到:

    这时候我们的数据测试文件已经被复制到项目中。

    然后我们看我们的测试函数上已经多加了几个特性。我们重新修改一下单元测试代码:

        /// <summary>
    ///CalculateTotalPrice 的测试
    ///</summary>
    [DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV",
    "|DataDirectory|\\testData.csv",
    "testData#csv", DataAccessMethod.Sequential),
    DeploymentItem("TestProject\\testData.csv"), TestMethod()]
    public void CalculateTotalPriceTest()
    {
    UnitTest target = new UnitTest(); // TODO: 初始化为适当的值
    // double quantity = 10.0F; // TODO: 初始化为适当的值
    double quantity = Convert.ToDouble(this.testContextInstance.DataRow["Quantity"]);

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

    double expected = Convert.ToDouble(this.testContextInstance.DataRow["ExpectedPrice"]);

    double actual;
    actual = target.CalculateTotalPrice(quantity);
    Assert.AreEqual(expected, actual);
    //Assert.Inconclusive("验证此测试方法的正确性。");
    }

    最后我们运行一下我们的测试用例,结果就是我们看到它在运行结果里面还有每一行数据的运行结果。如果其中一行数据失败,那我们的整体结果就是失败的。我们双击其中一行的结果还能进一步查看它运行的详情。


     

  • 相关阅读:
    EMQTT测试--安装与测试 (windows)
    phpStudy本地搭建wordpress教程
    windows下9款一键快速搭建PHP本地运行环境的好工具(含php7.0环境)
    mysql允许外网访问 和修改mysql 账号密码
    mysql sql常用语句
    Mysql(MyISAM和InnoDB)及Btree和索引优化
    Python 有关网址
    Python 字典(Dictionary)操作详解
    pandas读取xlsx
    Python 学习笔记 (变量与数据类型)
  • 原文地址:https://www.cnblogs.com/zhijianliutang/p/2289398.html
Copyright © 2011-2022 走看看