C# 使用MSTest进行单元测试

目录

写在前面

代码实现

执行结果


写在前面

MSTest是微软官方提供的.NET平台下的单元测试框架;可使用DataRow属性来指定数据,驱动测试用例所用到的值,连续对每个数据化进行运行测试,也可以使用DynamicData 属性来指定数据,驱动测试用例所用数据的成员的名称、种类(属性、默认值或方法)和定义类型(默认情况下使用当前类型)

代码实现

新建目标类DataChecker,增加待测试的方法,内容如下:

    public class DataChecker{public bool IsPrime(int candidate){if (candidate == 1){return true;}return false;}public int AddInt(int first, int second){int sum = first;for (int i = 0; i < second; i++){sum += 1;}return sum;}}

 新建单元测试类UnitTest1


namespace MSTestTester.Tests;[TestClass]
public class UnitTest1
{private readonly DataChecker _dataChecker;public UnitTest1(){_dataChecker = new DataChecker();}[TestMethod][DataRow(-1)][DataRow(0)][DataRow(1)]public void IsPrime_ValuesLessThan2_ReturnFalse(int value){var result = _dataChecker.IsPrime(value);Assert.IsFalse(result, $"{value} should not be prime");}[DataTestMethod][DataRow(1, 1, 2)][DataRow(2, 2, 4)][DataRow(3, 3, 6)][DataRow(0, 0, 1)] // The test run with this row failspublic void AddInt_DataRowTest(int x, int y, int expected){int actual = _dataChecker.AddInt(x, y);Assert.AreEqual(expected, actual,"x:<{0}> y:<{1}>",new object[] { x, y });}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 },};}}[TestMethod][DynamicData(nameof(AdditionData))]public void AddIntegers_FromDynamicDataTest(int x, int y, int expected){int actual = _dataChecker.AddInt(x, y);Assert.AreEqual(expected, actual, "x:<{0}> y:<{1}>", new object[] { x, y });}
}

执行结果

打开命令行窗口执行以下命令:

dotnet test

 符合预期结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/298569.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单例模式(C++实现)

RAII运用 只能在栈上创建对象 只能在堆上创建的对象 单例模式 设计模式 懒汉模式 解决线程安全 优化 饿汉模式 饿汉和懒汉的区别 线程安全与STL与其他锁

IDEA基本设置

本博客适用于纯新手小白&#xff0c;或者刚下载IDEA想要优化开发添加配置的读者。 基础设置 滚轮调整字体大小 打开 IntelliJ IDEA。 转到菜单栏中的 “File” -> “Settings”&#xff08;Windows/Linux&#xff09;或 “IntelliJ IDEA” -> “Preferences”&#xff…

计算机网络基础知识分享

计算机网络基础知识分享 发送一个http请求&#xff0c;从客户端到服务器端&#xff0c;都经历了什么? **Ⅰ&#xff0c;浏览器生成消息 ** &#xff08;1&#xff09;浏览器输入网址 我们的探索之旅从在浏览器中输入网址开始&#xff0c;网址&#xff0c;准确来说应该叫 UR…

MATLAB学习笔记(一)求解三阶微分方程

一、求解三阶微分方程 对于多变量三阶微分方程求解问题&#xff0c;这里介绍一种求解方法。 例题如下&#xff1a; 对于以上方程&#xff0c;给定边界条件&#xff0c;&#xff0c;&#xff0c;&#xff0c;&#xff0c;。求解和的表达式。 二、解题步骤 &#xff08;1&…

Python遥感影像深度学习指南(2)-在 PyTorch 中创建自定义数据集和加载器

在上一篇 文章中,我们Fast.ai 在卫星图像中检测云轮廓,检测物体轮廓被称为语义分割。虽然我们用几行代码就能达到 96% 的准确率,但该模型无法考虑数据集中提供的所有输入通道(红、绿、蓝和近红外)。问题在于,深度学习框架(如 Keras、Fast.ai 甚至 PyTorch)中的大多数语…

复分析——第1章——复分析准备知识(E.M. Stein R. Shakarchi)

第一章 复分析准备知识 (Preliminaries to Complex Analysis) The sweeping development of mathematics during the last two centuries is due in large part to the introduction of complex numbers; paradoxically, this is based on the seemingly absurd no…

【DataGrip使用小技巧】2

【技巧1】要将活动编辑器与剪贴板内容进行比较&#xff0c;请右键单击编辑器中的任意位置&#xff0c;然后从上下文菜单中选择compare with Clipboard. 如图所示 剪贴板和编辑器的比较一目了然 【技巧2】若要创建表的备份副本&#xff0c;请将表拖到数据库树视图中同一数据源的…

2023.12.24 关于 Redis 中 String 类型内部编码 及 应用场景

目录 String 类型内部编码 3 种内部编码方式 String 类型应用场景 Cache 缓存 键名命名规则 计数&#xff08;Counter&#xff09; 共享会话&#xff08;Session &#xff09; 手机验证码 总结 String 类型内部编码 3 种内部编码方式 int&#xff1a;用来表示 64 位 —…

VUE项目中使用jessibuca实现直播流播放

静态文件引入&#xff1a; 将静态文件存放到public文件夹下 在index.html中引入 具体实现&#xff1a; <template><div class"container" ref"container" style"width:100%;height:200px;"> </div> </template><s…

zabbix-邮件告警与钉钉机器人告警

zabbix-邮件告警 在部署邮件告警前需要先将zabbix部署成功 邮件告警需要得到邮箱的授权码&#xff0c;这里将以qq邮箱为例。 1.获取邮箱的授权码 2.编辑Email的相关信息 3.测试Email是否配置成功 测试成功。 4.为用户添加邮箱报警服务 5.创建主机群组、主机、监视项、触…

Maven高级篇

Maven依赖管理原则; 可选依赖&#xff1a;隐藏当前项目中的指定的包&#xff0c;如此&#xff0c;别的包引用当前包时&#xff0c;当前包中的指定包就被隐藏了&#xff0c;在别的包中无法看到隐藏的包 排除依赖&#xff1a;指定排除引用包中所包含的依赖&#xff0c;防止与当…

【数据结构和算法】删掉一个元素以后全为 1 的最长子数组

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一&#xff1a;滑动窗口 2.2 滑动窗口解题模板 三、代码 3.1 方法一&#xff1a;滑动窗口 四…