c#中使用METest单元测试

这篇具有很好参考价值的文章主要介绍了c#中使用METest单元测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

METest是一个用于测试C#代码的单元测试框架。单元测试是一种软件测试方法,用于验证代码的各个单元(函数、方法、类等)是否按照预期工作。METest提供了一种简单而强大的方式来编写和运行单元测试。

  • TestMethod:这是一个特性,用于标记测试方法。
  • Assert:这是一个断言类,用于验证测试结果是否符合预期。
  • DataTestMethod属性:用于标记一个方法作为参数化测试方法。
  • DataRow属性:用于提供参数值,每个参数值对应一个测试用例。

使用单元测试测试

点击VS项目解决方案>> MSTest单元测试项目

建好单元项目引入需要测试的项目

AAA(准备、执行、断言)模式

是编写待测试方法的单元测试的常用方法:

  • 准备(Arrange),单元测试方法的准备部分初始化对象并设置传递给待测试方法的数据;
  • 执行(Act),执行部分调用具有准备参数的待测试方法;
  • 断言(Assert),断言部分验证待测试方法的执行行为与预期相同。
[TestMethod()]
public void GetTriangle_Test()
{
    // arrange  
    string[] sideArr = { "5", "5", "5" }; // 准备传给待测试方法的数据
    string expected = "等边三角形";
    // act  
    var actual = UnitTestClass.GetTriangle(sideArr); // 调用测试方法
    // assert  
    Assert.AreEqual(expected, actual); // 验证待测试方法的执行结果是否与预期相同
}

参数化测试

同样的逻辑,根据输入参数不同给出不同的结果。因为只是参数不同,所以并不希望把测试方法写多遍,但是又希望对每个参数的测试成为一个独立的测试用例。举例说,假定我有一个数学计算的方法是把两个整数相加求和,我希望证明这个方法对于任意两个数都是通过的。

[DataTestMethod] //注明这个方法是参数化测试方法;
[DataRow("0508")] //一组参数,参数可以是任何值;但是一定要和参数的测试方法匹配。
[DataRow("0509")]
[DataRow("0005")]
public void GetFlag(string name)
{
    //act 执行部分 调用具有准备参数的待测方法
    var r = fun.Flag("D", "R", name);
    //assert 断言部分 验证预期和实际结果是否相同
    Assert.AreEqual(name, r);
}

这里有一个要点,参数的个数设置多少个,因为测试的方法适合三个参数,所以大部分的人都认为是三个参数就够了,其实不是,应该是四个参数,还有一个是结果值。看上面的代码,我们最后断言的标准是期望值和实际值进行对比,而期望值是来自参数组文章来源地址https://www.toymoban.com/news/detail-743526.html

测试示例1

using Autofac;
using MerryDllFramework;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace MsTestMerryDLL
{
    [TestClass]
    public class UnitTest1
    {
        Functional fun;
        private static IContainer Container
        {
            set;
            get;
        }

        [ClassInitialize]
        public static void ClassInitialize(TestContext testContext)
        {
            // 在测试类初始化之前进行调用的方法
        }

        [TestInitialize]
        public void TestInitialize()
        {
            // 在每个测试方法执行之前进行调用的方法
            ContainerBuilder builder = new ContainerBuilder();
            builder.RegisterType<Functional>().As<Functional>().SingleInstance();
            Container = builder.Build();
            fun = Container.Resolve<Functional>();
            var res = fun.USB("D", 1);
            Assert.AreEqual(expected: "True", res);
        }

        [TestCleanup]
        public void TestCleanup()
        {
            // 在每个测试方法执行之后进行调用的方法
            var res = fun.USB("D", 0);
            Assert.AreEqual("True", res);
        }

        [DataTestMethod]
        [DataRow("0508")]
        [DataRow("0509")]
        [DataRow("0005")]
        public void GetFlag(string name)
        {
            // 测试方法
            var r = fun.Flag("D", "R", name);
            Assert.AreEqual(name, r);
        }
    }
}

到了这里,关于c#中使用METest单元测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C# 软件开发之单元测试

    在日常开发中,一般通过启动调试或运行程序来查看功能是否符合预期,如果不符合预期,则需要优化程序,再次运行,如此反复,直到程序的输出符合预期需求为止。随着程序的不断复杂化,某些功能的测试也变得越来越复杂,可能为了验证一个很小的改动项,就需要操作

    2024年02月03日
    浏览(38)
  • C#学习笔记3-函数与单元测试

    现在开始参考书籍变为:《C# 12 and .NET 8 – Modern Cross-Platform Development.Mark Price》 Writing, Debugging, and Testing Functions 写函数 Debug 运行时 logging 单元测试 一个有着 XML 注释的函数 这里直接举一个例子: Numbers that are used to count are called cardinal numbers(基数), for example, 1, 2, and 3. Wher

    2024年01月18日
    浏览(44)
  • 基于MSTest框架创建一个简单的C#单元测试(Visual Studio 2019版)

    目录 1、环境准备 2、创建一个被测试项目 3、创建单元测试项目 4、执行测试 5、说明   环境: IDE: Visual Studio 2019 单元测试框架:MSTest .NET 版本:.NET Core 3.1 Test.Sdk版本:Microsoft.NET.Test.Sdk 16.9.4 目的: 编写单元测试方法以验证   BankAccount   类的   Debit   方法,至少需要检查

    2023年04月26日
    浏览(82)
  • Golang单元测试详解(一):单元测试的基本使用方法

    Golang 中的单元测试是使用标准库 testing 来实现的,编写一个单元测试是很容易的: 创建测试文件:在 Go 项目的源代码目录下创建一个新的文件(和被测代码文件在同一个包),以 _test.go 为后缀名。例如,要测试net包中 dial.go 中的方法,在 net 包中创建一个名字为 dial_test.g

    2024年02月06日
    浏览(49)
  • @SpringBootTest单元测试测试类的使用

    使用SpringBoot 测试类可在不需要启动程序时,即可使用。当你运行你的测试方法时他会自己启动程序调用所需使用到的mapper,service接口,实现方法。故而可在测试类中像编写正常service方法一样编写代码 在这里讲解下几个注解的作用及流程 1.@SpringBootTest(classes = 启动类名称.c

    2024年02月11日
    浏览(37)
  • 【单元测试】Mockito使用详解

    一个单元测试应该有如下特点: 应该是自动化的 应该可以快速运行 每个单元测试不应该依赖其它测试的结果和执行顺序,单元测试框架可以按任意的顺序执行每个测试 每个单元测试不应该依赖数据库,外部文件,或者任何长时间运行的任务。单元测试应该是独立的,不应该

    2024年04月15日
    浏览(87)
  • Mockito单元测试基本使用

    本文参考: 【码农教程】手把手教你Mockito的使用 - 掘金 (juejin.cn) java - doReturn().when()与when().thenReturn() - 成长之路 - SegmentFault 思否 单元测试实践篇:Mock_阿里巴巴淘系技术团队官网博客的博客-CSDN博客 阿里是如何进行单元测试培训的?_Hollis Chuang的博客-CSDN博客 【Mockito】Mock

    2024年02月10日
    浏览(50)
  • 自己是如何使用单元测试

    自己是如何使用单元测试 进行单元测试能够让我们在编写方法的具体实现代码后,能清晰地看到其是否能实现预期的功能,有助于我们及时修正自己方法中存在的bug,以免在后续使用到某方法时出现意想不到的错误。 代码如下(示例): 代码如下(示例): 用JUnit编写测试

    2024年01月20日
    浏览(62)
  • 使用gtest做单元测试

    gtest是一个跨平台的(Liunx、Mac OS X、Windows 、Cygwin 、Windows CE and Symbian ) C++单元测试框架,由google公司发布。gtest是为在不同平台上为编写C++测试而生成的。它提供了丰富的断言、致命和非致命判断、参数化、”死亡测试”等等 配置gtest头文件及库 下载gtest源码: Releases · goog

    2023年04月12日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包