.NET单元测试 xUnit NUnit MSTest

2021-02-23  乐帮网

unittest

从 Visual Studio 2017 14.8 版本开始,.NET 语言主要包括适用于 NUnit 和 xUnit 的内置模板。 当然还有一个MSTest,它们的主要的应用场景是什么呢?

1、MSTest 

首先说一下这个MSTest吧,这个主要是微软自己开发的一套框架,主要经历了V1 和V2两个大版本,发展到现在也是一路的改进,功能性和易用性上都有大幅度的提高,但是知名度并不是Number One。支持跨平台,还是建议大家尝试使用的。典型的代码块如下:

using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.IO;
using System;

namespace HelloWorldTests
{
   [TestClass]
   public class UnitTest1
   {
      private const string Expected = "Hello World!";
      [TestMethod]
      public void TestMethod1()
      {
         using (var sw = new StringWriter())
         {
            Console.SetOut(sw);
            HelloWorldCore.Program.Main();

            var result = sw.ToString().Trim();
            Assert.AreEqual(Expected, result);
         }
      }
   }

2、Unit Test

这个是就是我们之前熟知的Unit Test,只支持Windows 下的.NET Framework。随着NUnitTest的开源免费这个的使用量一直在减少。

3、NUnit Test

这个是目前使用率最高的单元测试,所支持的框架多,插件也比较多,功能完善,只有你用不到的,没有它实现不了的。同时也支持跨平台支持NET Core。典型的代码块如下:

using NUnit.Framework;
using System.IO;
using System;

namespace HelloWorldTests
{
   public class Tests
   {
      private const string Expected = "Hello World!";

      [SetUp]
      public void Setup()
      {
      }
      [Test]
      public void TestMethod1()
      {
         using (var sw = new StringWriter())
         {
            Console.SetOut(sw);
            HelloWorldCore.Program.Main();

            var result = sw.ToString().Trim();
            Assert.AreEqual(Expected, result);
         }
      }
   }
}

4、XUnit Test

这个是一个比新的单元测试框架,它是在NUnit的基础上重新开发的一个框架。它的主要思想是减少测试用例本身的复杂性,使单元测试回归到测试内容本身,而不是复杂在如何写测试。所以说XUnit Test提供的测试功能实现理论上更简单。也是比较看好的。典型的代码如下:

using System;
using Xunit;
using System.IO;

namespace HelloWorldTests
{
    public class UnitTest1
    {
        private const string Expected = "Hello World!";
        [Fact]
        public void Test1()
        {
            using (var sw = new StringWriter())
            {
                Console.SetOut(sw);
                HelloWorldCore.Program.Main();

                var result = sw.ToString().Trim();
                Assert.Equal(Expected, result);
            }
        }
    }
}

主要参考:https://docs.microsoft.com/zh-cn/visualstudio/test/getting-started-with-unit-testing?view=vs-2019&tabs=xunit

https://lebang2020.cn/details/2102232ibetegi.html

 

公众号二维码

关注我的微信公众号
在公众号里留言交流
投稿邮箱:1052839972@qq.com

庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。

欧阳修

付款二维码

如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力