C#-单元测试NUnit框架的安装及使用

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

目录

一、NUnit的安装(Visual Studio)

二、NUnit常见Attribute的使用

三、NUnit的断言系统


一、NUnit的安装(Visual Studio)

通过VS菜单栏中的NuGet包管理器搜索并安装

1、若需要使用NUnit框架自带的runner运行,则在NuGet包管理器中搜索NUnit.Console安装,

安装后,在packages\NUnit.ConsoleRunner.3.X.X\tools中找到unit3-console并运行;

2、若想集成到VS上的测试平台,使用Microsoft的runner运行,则在NuGet包管理器中搜索NUnit3TestAdapter安装;


二、NUnit常见Attribute的使用

[TestFixture]       

标识一个测试类

[Test]

标识一个无参的方法为测试用例

示例代码:

    class MyPro
    {
        public static void Main()
        {
            MyProTest proTest = new MyProTest();
            proTest.TestStringAdd();
        }
        public string StringAdd(string str1, string str2)
        {
            return str1 + str2;
        }
    }
    [TestFixture]
    public class MyProTest
    {
        [Test]
        public void TestStringAdd()
        {
            try
            {
                MyPro proTest = new MyPro();
                Assert.AreEqual("hello auston", proTest.StringAdd("hello,", "auston"));
                Console.WriteLine("Test pass");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
    }

[TestCase]

标识一个带参的方法为测试用例 ,可以设置测试数据及预期数据

示例代码:

        [TestCase("hello ","world",ExpectedResult ="hello,world")]
        public string TestStringAdd(string str1, string str2)
        {
            return str1 + str2;
        }
        [TestCase("hello ", "world", "hello world")]
        public void TestStringAdd(string str1, string str2, string str3)
        {
            Assert.AreEqual(str3, str1 + str2);//断言
        }

[TestCaseSource]

参数化测试中,设置测试数据的来源(实例化对象用nameof(),类用typeof())

示例代码:

        [TestCaseSource(nameof(cases))]
        public void TestStringAdd(string str1, string str2, string str3)
        {
            Assert.AreEqual(str3, str1 + str2);
        }
        static object[] cases = {
            new object[]{"lo","ng","long"},
            new object[]{"ti","me","time" },
            new object[]{"no","see","nosee" }
        };
        [TestCaseSource(typeof(Cases))]
        public void TestStringAdd(string str1, string str2, string str3)
        {
            Assert.AreEqual(str3, str1 + str2);
        }
    class Cases
    {
        public IEnumerator<object[]> GetEnumerator()
        {
            yield return new object[] { "lo", "ng", "long" };
            yield return new object[] { "ti", "me", "time" };
            yield return new object[] { "no", "see", "nosee" };
        }
    }

[TestFixtureSource]

参数化测试中,设置脚手架数据的来源(根据构造函数的参数数据),使用同上

[Setup]

运行测试用例的统一设置,每次运行测试用例都会执行一次

[TearDown]

运行测试用例的统一设置,每次运行测试用例都会执行一次   

[TestFictureSetUp]与[TestFixtureTearDown]

用法同上,范围作用于整个测试类

[OneTimeSetUp]

运行测试用例前的统一设置,运行任意一个测试用例前会执行一次

[OneTimeTearDown]

运行测试用例后的统一设置,运行任意一个测试用例后会执行一次

[Ignore]

标识一个测试类或方法不应执行,NUnit3中需标明原因

示例代码:

    [TestFixture]
    [Ignore("不执行原因")]
    class MyTest
    { 
    
    }

[Category("分类名")]

给测试方法分组,测试时可运行某一组内的所有测试方法;

可与Test特性写在一起,逗号隔开,如:[Test,Category("testgroup001")];

有一个Explicit属性可显式排除该Category的运行,如:[Category("test001",Explicit=true)];

[ExpectedException(typeof(ExpectException))]或[Test,ExpectedException(typeof(ExpectException))]

该特性用于测试期望异常


三、NUnit的断言系统

NUnit提供约束模型(Constraint Model)和经典模型(Classic Model)两种断言系统

判断假设条件是否成立;

1、经典模型(Assert、StringAssert、CollectionAssert、FileAssert、DirectoryAssert)

                每种断言都有一个单独的方法,本质是由约束模型实现;

        注:已不添加新的功能。

2、约束模型(推荐)

        约束模型只有Assert.That()一种方法,但有很多重载方法(参数是约束对象,根据不同的断言类型有不同的约束对象)

常用Assert方法有:

Assert.IsTrue 用来验证条件表达式是否为真

Assert.AreEqual 验证是否与期望值相等

Assert.AreSame验证是否引用了同一个对象

3、多个断言(使用Assert.Multiple方法)

        若一个断言失败,测试不会终止,继续执行后面的断言,执行完后将结果统一返回。文章来源地址https://www.toymoban.com/news/detail-850531.html

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

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

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

相关文章

  • C# 中的单元测试,如何使用单元测试进行程序测试和调试?

    单元测试是一种软件测试方法,用于测试单个功能或方法是否按预期工作。在 C# 中,可以使用 .NET 框架中的单元测试工具来编写和运行单元测试。 下面是使用 Visual Studio 内置的单元测试框架来创建一个简单的单元测试的步骤: 在 Visual Studio 中创建一个新的类库项目。 在新项

    2024年02月15日
    浏览(45)
  • idea 安装JUnit单元测试框架

    JUnit是一套专门用于java的单元测试框架,主要是测试方法 junit4官方网站: JUnit – About junit5官方网站:JUnit 5  框架依赖:junit-4.12.jar;hamcrest-core-1.3.jar 安装步骤: (1)项目中创建lib目录 (2)把两个jar文件复制到lib目录 (3)选择lib目录然后点击右键选择“Add as Library.....

    2024年02月07日
    浏览(33)
  • C# 使用xUnit进行单元测试

    目录 写在前面 操作步骤  执行结果 xUnit.net 是 NUnit 的作者Jim Newkirk搞的一个新的单元测试框架,目的是解决 NUnit 存在的一些问题和缺点,并在框架中加入一些最佳实践和扩展能力。 主要的改进点如下: 为每个测试方法产生一个对象实例 取消了 [SetUp] 和 [TearDown] 取消了 [Ex

    2024年02月04日
    浏览(31)
  • c#中使用METest单元测试

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

    2024年02月05日
    浏览(33)
  • C#单元测试,MsTest的基本使用

    白盒测试 Visio Studio MsTest单元测试基本使用 单元测试,顾名思义就是针对某个单元的测试,一般情况下是指最小单元。但是这个最小单元也是有区别的,因为单元测试应用在很多方面,比如电视机组装,他的最小单元就是一个电容元件,在C语言中指一个函数,在Java里指一个

    2024年02月13日
    浏览(32)
  • Go单元测试及框架使用

    建议Go 语言推荐测试文件和源代码文件放在一块,测试文件以 _test.go 结尾。 函数名必须以 Test 开头,后面一般跟待测试的函数名 参数为 t *testing.T 简单测试用例定义如下: 在goland中,编写好方法后,右键Generate-Test for funtion, 可自动生成单元测试代码 生成的代码如下: 需要

    2024年02月09日
    浏览(38)
  • 【单元测试】如何使用 JUnit5 框架?

      Junit5是一个用于在Java平台上进行单元测试的框架。JUnit 5 框架主要由三部分组成:JUnit Platform、JUnit Jupiter 和 JUnit Vintage。 JUnit Platform:定义了测试引擎的 API,是 JVM 上用于启动测试框架的基础服务,支持通过 IDE、构建工具、命令行等方式运行单元测试。 JUnit Jupiter:包含

    2024年04月10日
    浏览(38)
  • Python中的单元测试框架:使用unittest进行有效测试

    在软件开发中,单元测试是一种测试方法,它用于检查单个软件组件(例如函数或方法)的正确性。Python 提供了一个内置的单元测试库,名为 unittest ,可以用来编写测试代码,然后运行测试,并报告测试结果。 本文将向你介绍如何使用 unittest 来编写和运行单元测试。通过阅

    2024年03月09日
    浏览(33)
  • 使用Glib中测试框架对C代码进行单元测试

    C++项目的测试框架比较常见的是Google的 gtest (前文CMake项目使用ctest+gtest进行单元测试有使用实例介绍 gtest ,感兴趣的读者可以去看看),也有一些其它框架,比如Boost中的测试框架。这些框架虽然也可以测试C代码,但是如果在一个纯C项目中引入这些的框架,则需要使用C+

    2023年04月22日
    浏览(25)
  • Unittest单元测试框架之unittest的第三方库paramunittest参数化基础及应用

    参数化测试用于当需要使用多组不同的测试数据测试同一个方法的时候 paramunittest是unittest实现参数化的一个专门的模块,可以传入多组参数,自动生成多个用例 实现unittest参数化的方式有多种,如ddt、paramunittest等 执行以上代码,测试结果如下: 执行以上代码,测试结果如下

    2024年02月05日
    浏览(31)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包