zoukankan      html  css  js  c++  java
  • C#常用单元测试框架比较:XUnit、NUnit和Visual Studio(MSTest)

         做过单元测试的同学大概都知道以上几种测试框架,但我一直很好奇它们到底有什么不同,然后搜到了一篇不错的文章清楚地解释了这几种框架的最大不同之处。

         地址在这里:http://www.tuicool.com/articles/F3eEn2j

         简而言之,三者是非常相似的,如下所示:

     1 [TestCase(1)]
     2 [TestCase(2)]
     3 [TestCase(3)]
     4 [TestCase(4)]
     5 public void FireMultipleTimes(int fireCount)
     6 {
     7     Bug bug = new Bug();
     8     Raygun gun = new Raygun();
     9 
    10     for(int i = 0; i < fireCount; i++) 
    11     {
    12         gun.FireAt(bug);
    13     }
    14 
    15     if (fireCount >= 3) 
    16     {
    17         Assert.IsFalse(gun.HasAmmo());
    18     }
    19     else 
    20     {
    21         Assert.IsTrue(gun.HasAmmo());
    22     }
    23 }

         上面是NUnit的,XNunit也有类似的方法。这篇文章非常适合刚入门单元测试的同学看。

         不过包括Abp在内的开源框架用的都是XUnit或NUnit。

         在网上调查了一下,关于MSTest的负面评论还是比较多的,最主要的问题就在于MSTest的弹性不够好,它无法在非微软的平台上运行单元测试,不过在 .Net Core日渐成熟的今天,我觉得现在已经不是问题了。如下MSTest的测试代码:

     1 [TestClass]
     2 public class UnitTest1
     3 {
     4     [DataTestMethod]
     5     [DataRow(1, 2, 2)]
     6     [DataRow(2, 3, 5)]
     7     [DataRow(3, 5, 8)]
     8     public void AdditionTest(int a, int b, int result)
     9     {
    10         Assert.AreEqual(result, a + b);
    11     }
    12 }

         现在来看,几乎这些框架都没差了,在StackOverflow看到一条我很赞同的看法:

         其实不用顾虑那么多,随便选择吧,MSTest对Vs的集成是最好的,而且也很容易上手,如果哪一天碰到它所无法解决的事情,切换到其他框架也非常简单,仅仅只是Nuget下个包,换下特性而已。

    转载链接:https://www.cnblogs.com/RobotZero/p/6732728.html

  • 相关阅读:
    python计算纹理特征
    遥感影像提取农作物种植分布数据之经验总结
    Python实现多线程调用GDAL执行正射校正
    Centos7.3 编译安装GDAL以及Python的GDAL包
    C#通过COM组件调用IDL的pro程序
    IDL实现矢量文件裁剪栅格数据
    HttpClient使用示列(post请求的)
    SpringBoot自带的定时功能
    mysql安装与启用
    dos命令之端口查看
  • 原文地址:https://www.cnblogs.com/supersnowyao/p/8478186.html
Copyright © 2011-2022 走看看