Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing NUnit vs.MbUnit vs.MSTest vs.xUnit.net_Unit Testing_Nunit_Mstest_Mbunit_Xunit.net - Fatal编程技术网

Unit testing NUnit vs.MbUnit vs.MSTest vs.xUnit.net

Unit testing NUnit vs.MbUnit vs.MSTest vs.xUnit.net,unit-testing,nunit,mstest,mbunit,xunit.net,Unit Testing,Nunit,Mstest,Mbunit,Xunit.net,有很多针对.NET的单元测试框架。我发现了这个小功能比较: 现在我要为我们选择最好的。但是怎么做呢?这有关系吗?哪一个是最能证明未来的,并且背后有相当大的动力?我应该关心这些功能吗?虽然xUnit似乎是最现代的,并且是专为.NET设计的,但NUnit似乎再次被广泛接受。MSTest再次被集成到Visual Studio中…NUnit可能是第三方工具最支持的工具。它也比其他三个存在的时间更长 我个人不太关心单元测试框架,模拟库更重要(而且更重要)。只要选一个并坚持下去。这没什么大不了的,在它们之间

有很多针对.NET的单元测试框架。我发现了这个小功能比较:


现在我要为我们选择最好的。但是怎么做呢?这有关系吗?哪一个是最能证明未来的,并且背后有相当大的动力?我应该关心这些功能吗?虽然xUnit似乎是最现代的,并且是专为.NET设计的,但NUnit似乎再次被广泛接受。MSTest再次被集成到Visual Studio中…

NUnit可能是第三方工具最支持的工具。它也比其他三个存在的时间更长


我个人不太关心单元测试框架,模拟库更重要(而且更重要)。只要选一个并坚持下去。

这没什么大不了的,在它们之间切换很容易。MSTest被集成也没什么大不了的,只要抓取testdriven.net就可以了


正如前面的人所说,选择一个模拟框架,目前我最喜欢的是Moq。

我不会选择MSTest。虽然它可能是微软支持的框架的最具未来性的证明,但它并不是最灵活的解决方案。如果没有一些黑客,它不会独立运行。因此,在TFS以外的构建服务器上运行它而不安装VisualStudio是很困难的。VisualStudio测试运行程序实际上比Testdriven.Net+任何其他框架都慢。而且,由于该框架的发行版与Visual Studio的发行版相关联,因此更新较少,如果您必须使用较旧的VS,则与较旧的MSTest相关联

我认为使用哪种其他框架并不重要。从一个切换到另一个真的很容易


我个人使用XUnit.Net或NUnit取决于我同事的偏好。NUnit是最标准的。XUnit.Net是最精简的框架。

在小规模/个人规模上,它不是什么大事,但在更大的规模上,它可以很快成为一个更大的交易。我的雇主是一家大型的微软商店,但由于一些原因,他不会/不能购买Team System/TFS。我们目前使用Subversion+Orcas+MBUnit+TestDriven.NET,它工作得很好,但是获取TD.NET是一个巨大的麻烦。MBUnit+TestDriven.NET的版本敏感性也是一个大麻烦,另外还有一个商业问题(TD.NET)需要法律部门审查,采购部门需要处理和管理,这并不是一件小事。我的公司和许多公司一样,对MSDN订阅模式非常满意,而且不习惯为数百名开发人员处理一次性采购。换句话说,在我看来,完全整合的微软产品虽然绝对不是最好的面包,但却是一个重要的附加值


我认为我们将继续当前的步骤,因为它很有效,而且我们已经在组织上克服了困难,但我确实希望MS在这一领域有一个引人注目的产品,这样我们就可以整合和简化我们的开发堆栈。

我知道这是一个老思路,但我想我会投赞成票。虽然提到的大多数其他测试框架都差不多,但xUnit.NET采用了一种非常独特、现代和灵活的单元测试方法。它改变了术语,因此您不再定义TestFixture和Tests……您指定了有关代码的事实和理论,这与TDD/BDD角度的测试概念更好地结合在一起

NET也是非常可扩展的。它的FactAttribute和TraitAttribute属性类不是密封的,它们提供了可重写的基本方法,使您能够控制这些属性应该如何执行。虽然xUnit.NET的默认形式允许您编写与NUnit测试装置及其测试方法类似的测试类,但您完全不局限于这种形式的单元测试。您可以自由扩展该框架以支持BDD风格的关注点/上下文/观察规范,如图所示

NET还通过其理论属性和相应的数据属性支持直接开箱即用的拟合样式测试。Fit输入数据可以从excel、数据库甚至自定义数据源(如Word文档)加载(通过扩展“基本数据”属性)。这使您可以利用单个测试平台进行单元测试和集成测试,这在减少产品依赖性和所需培训方面非常重要


其他的测试方法也可以用xUnit.NET实现……可能性是无限的。结合另一个非常前瞻性的模拟框架,这两个框架为实现自动化测试创建了一个非常灵活、可扩展、功能强大的平台。

在C++中混合模式项目不好用,所以我不得不放弃它

考虑补充,而不是替换,MSTEST与另一个测试框架。您可以保持VisualStudio MSTest集成,同时获得功能更全面的测试框架的好处

例如,我将xUnit与MSTest一起使用。添加对xUnit.dll程序集的引用,然后执行如下操作。令人惊讶的是,它只是工作

using Microsoft.VisualStudio.TestTools.UnitTesting;
using Assert = Xunit.Assert;  // <-- Aliasing the Xunit namespace is key

namespace TestSample
{
    [TestClass]
    public class XunitTestIntegrationSample
    {
        [TestMethod]
        public void TrueTest()
        {
            Assert.True(true);  // <-- this is the Xunit.Assert class
        }

        [TestMethod]
        public void FalseTest()
        {
            Assert.False(true);
        }
    }
}
使用Microsoft.VisualStudio.TestTools.UnitTesting;

使用Assert=Xunit.Assert;//ReSharper在这个领域确实有令人信服的产品!你的回答很奇怪,似乎自相矛盾。你说你是一家大型的微软商店,但不会使用TFS(这是关键——没有TFS,你将无法从垂直集成中获益)和MSDN订阅模型,而是使用非MS方法。老实说,我迷路了。很遗憾,答案已经过时了。你最喜欢的模拟库是什么?我喜欢Moq,RhinoMocks也很好。可能还值得检查Pex和Moles,Moles部分特别适用于模拟。带有Fakeitesy的MSPec。。。使用NSubstitute和AutoFixture使测试用例更具可读性MSPEC是我的选择。我一直被拖到这个结论上来。我真的很想