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方法)

        若一个断言失败,测试不会终止,继续执行后面的断言,执行完后将结果统一返回。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
自动测试工具是软件开发过程中的重要组成部分,它能够帮助开发人员和测试人员自动执行测试用例,提高测试的效率和准确性。本实验的目的是熟悉一些常用的自动化测试工具,包括nunit、junit和vs2010。 nunit是一个用于测试.NET应用程序的开源单元测试框架,它提供了丰富的API和工具来编写和运行单元测试。对于.NET开发人员来说,nunit是一个非常实用的工具,它可以帮助开发人员自动执行单元测试,并生成详细的测试报告。通过使用nunit,开发人员可以更早地发现和修复代码中的问题,加快开发过程。 junit是一个用于测试Java应用程序的开源单元测试框架,它提供了一组用于编写和执行单元测试的API和工具。与nunit类似,junit可以帮助开发人员自动执行单元测试,并生成详细的测试报告。使用junit,开发人员可以更加准确地测试他们的代码,并通过快速发现和修复问题来提高代码质量。 vs2010是微软的一款集成开发环境,它提供了一套用于测试和调试的工具。通过使用vs2010,开发人员可以轻松地创建和运行单元测试,并通过调试工具来分析代码的执行过程。vs2010还提供了丰富的功能,如代码覆盖率分析和性能分析,帮助开发人员进行更全面的测试。 通过本实验,我们可以学习和熟悉这些自动化测试工具的基本用法和功能,并掌握如何使用它们来进行有效的测试。这对于提高软件开发和测试的效率和质量都具有重要意义。在实践中,我们可以通过编写和执行一些简单的测试用例,来验证这些工具的功能和性能。同时,我们还可以学习如何编写高质量的测试用例,以及如何生成和分析测试报告,以进一步提高测试的准确性和有效性。 总之,熟悉和掌握自动化测试工具的使用对于软件开发和测试人员来说是非常重要的。通过本实验,我们可以提高对nunit、junit和vs2010等自动化测试工具的了解和应用能力,从而在实际的开发和测试工作中更好地利用这些工具,提高工作效率和质量。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值