首页 > 其他分享 >MSTest之数据驱动的单元测试

MSTest之数据驱动的单元测试

时间:2023-05-08 18:56:44浏览次数:28  
标签:int object 单元测试 DataRow TestContext new 驱动 public MSTest

定义一个类Maths,有一个循环添加两个整数的方法:

public int AddInt(int first, int second)
{
    int sum = first;
    for (int i = 0; i < second; i++)
    {
        sum += 1;
    }

    return sum;
}

内联数据驱动测试

MSTest 使用 DataRow 指定数据驱动测试使用的值,连续对每个数据化进行运行测试

[DataTestMethod]
[DataRow(1, 1, 2)]
[DataRow(2, 2, 4)]
[DataRow(3, 3, 6)]
[DataRow(0, 0, 1)] // The test run with this row fails
public void AddInt_DataRowTest(int x, int y, int expected)
{
    var target = new Maths();
    int actual = target.AddInt(x, y);
    Assert.AreEqual(expected, actual,
        "x:<{0}> y:<{1}>",
        new object[] {x, y});
}

成员数据驱动测试

MSTest 使用 DynamicData 属性来指定将提供数据驱动测试所用数据的成员的名称、种类(属性、默认值或方法)和定义类型(默认情况下使用当前类型)

public static IEnumerable<object[]> AdditionData
{
    get
    {
        return new[]
        { 
            new object[] { 1, 1, 2 },
            new object[] { 2, 2, 4 },
            new object[] { 3, 3, 6 },
            new object[] { 0, 0, 1 }, // The test run with this row fails
        };
    }
}

[TestMethod]
[DynamicData(nameof(AdditionData))]
public void AddIntegers_FromDynamicDataTest(int x, int y, int expected)
{
    var target = new Maths();
    int actual = target.AddIntegers(x, y);
    Assert.AreEqual(expected, actual,
        "x:<{0}> y:<{1}>",
        new object[] {x, y});
}

源提供程序数据驱动测试

  1. 创建测试方法中使用的值的数据源
  2. 将TestContext类型的公共TestContext属性添加到测试类
  3. 创建单元测试方法
  4. 向其添加DataSourceAttribute属性
  5. 使用DataRow索引器属性检索测试方法中使用的值

创建数据源

创建名为 MathsData 的 Sql Compact 数据库和包含以下列名和值的名为 AddIntegersData 的表

FirstNumberSecondNumberSum
0 1 1
1 1 2
2 -3 -1

向测试类添加TestContext

 [TestClass()]
    public class AddIntTest{
    public TestContext TestContext{get; set;}
}

创建测试方法

 [TestClass()]
    public class AddIntTest{
    public TestContext TestContext{get; set;}
    
      [TestMethod]
// 添加DataSourceAttribute     [DataSource(@"Provider=Microsoft.SqlServerCe.Client.4.0; Data Source=C:\Data\MathsData.sdf;", "AddIntegersData")] public void AddIntegers_FromDataSourceTest() { var target = new Maths(); // Access the data int x = Convert.ToInt32(TestContext.DataRow["FirstNumber"]);

          // 使用DataRow索引器属性检索测试方法中使用的值

int y = Convert.ToInt32(TestContext.DataRow["SecondNumber"]);
         int expected = Convert.ToInt32(TestContext.DataRow["Sum"]);
         int actual = target.AddIntegers(x, y);
         Assert.AreEqual(expected, actual, "x:<{0}> y:<{1}>", new object[] {x, y});
}
            
} 
} 

 

标签:int,object,单元测试,DataRow,TestContext,new,驱动,public,MSTest
From: https://www.cnblogs.com/ttwx/p/17382829.html

相关文章

  • 1、领域驱动设计最佳实践
    分层概念在领域驱动设计中,通常将一个应用系统划分为四层架构,分别是表现层、应用层、领域层和基础设施层。表现层:负责处理用户界面和用户交互,如接收用户输入,显示输出结果等。应用层:负责协调应用程序的活动,如处理业务用例和业务流程等。领域层:负责实现业务逻辑和业务规则,包含领......
  • 四轮轮毂电机驱动车辆,驱动电机故障状态估计(UKF)
    四轮轮毂电机驱动车辆,驱动电机故障状态估计(UKF)软件使用:Matlab/Simulink适用场景:采用无迹卡尔曼滤波UKF进行轮毂电机状态估计,失效电机估计状态为0,正常电机状态为1。产品simulink源码包含如下模块:→工况:方向盘正弦输入→整车模块:7自由度整车模型→估计模块:无迹卡尔曼滤波包含:simulin......
  • 轮毂电机分布式驱动电动汽车操稳性控制_DYC 直接横摆力矩控制
    轮毂电机分布式驱动电动汽车操稳性控制_DYC直接横摆力矩控制软件使用:Matlab/Simulink适用场景:轮毂电机分布式驱动电动汽车直接横摆力矩DYC控制(各轮差速差扭),可实现多种工况下整车行驶稳定性。产品simulink源码包含如下模块(购买时选取一种搭配即可):→整车模块:7自由度整车模型→上......
  • vs2010单元测试
    一、     实验目的1、 掌握单元测试技术,并按单元测试的要求设计测试用例。 2、 掌握一种单元测试工具的使用。二、 实验内容自行学习vs2010或vs2012或vs2015等单元测试工具的使用。对下面被测代码进行测试且查看代码覆盖率,并录制操作视频,撰写实验报告。三、 设......
  • Linux驱动开发笔记(一):helloworld驱动源码编写、makefile编写以及驱动编译基本流程
    前言  基于linux的驱动开发学习笔记,本篇是描述了一个字符驱动的基础开发流程,以便做嵌入式开发多年的应用或者系统学习驱动开发。 笔者自身情况  笔者拥有硬件基础,单片机软硬基础,linux系统基础等各种,就是没有linux驱动框架基础,未做过linux系统移植和驱动移植开发了......
  • 字符设备驱动的框架
    字符设备驱动框架编写字符驱动设备框架时,主要的工作量在入口函数,卸载函数以及其设备文件操作函数当中。现在的很多板子写驱动不会像下面的程序这样的繁琐,但是从其中基本可以看到框架大体没变,所以用chatgpt生成了找个函数并修改,搭了字符设备驱动的框架。首先我们得明白一个字符......
  • Django笔记三十六之单元测试汇总介绍
    本文首发于公众号:Hunter后端原文链接:Django笔记三十六之单元测试汇总介绍Django的单元测试使用了Python的标准库:unittest。在我们创建的每一个application下面都有一个tests.py文件,我们通过继承django.test.TestCase编写我们的单元测试。本篇笔记会包括单元测试的......
  • 接口自动化 测试数据驱动 DDD模块使用
    一、DDT简单介绍名称:Data-DrivenTests,数据驱动测试作用:由外部数据集合来驱动测试用例的执行核心的思想:数据和测试代码分离应用场景:一组外部数据来执行相同的操作优点:当测试数据发生大量变化的情况下,测试代码可以保持不变实际项目:excel存储测试数据,ddt读取测试数据到单元......
  • Spring MVC 单元测试
    关键字:SpringMVC单元测试下面一步一步带领大家实现springMVC单元测试:新建一个基类:packagetest;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.junit.BeforeClass;importo......
  • 外设驱动库开发笔记53:MAX31856热偶变送器驱动
      在我们的产品中经常有需要温度检测的地方,而热电偶温度检测电路是我们常用的。热电偶温度检测的方法很多,有时出于简单方便的考虑我们会选择热偶温度变送器来实现,这一篇我们就来讨论使用MAX31856热电偶温度变送器实现温度的检测。1、功能概述  MAX31856可以对任何类型热电偶的......