当前位置:  开发笔记 > 编程语言 > 正文

NUnit与MbUnit对比MSTest与xUnit.net

如何解决《NUnit与MbUnit对比MSTest与xUnit.net》经验,为你挑选了7个好方法。

.NET有很多单元测试框架.我找到了这个小功能比较:http://xunit.github.io/docs/comparisons.html

现在我要为我们选择最好的一个.但是怎么样?有关系吗?哪一个是最具前瞻性的证据,背后有一个不错的动力?我应该关心这些功能吗?虽然xUnit似乎是最现代的,专为.NET设计,但NUnit似乎再次被广泛接受.MSTest再次集成到Visual Studio中......



1> jrista..:

我知道这是一个老线程,但我想我会发布对xUnit.NET的投票.虽然提到的大多数其他测试框架都非常相似,但xUnit.NET采用了一种非常独特,现代且灵活的单元测试方法.它改变了术语,因此您不再定义TestFixtures和Tests ...您可以指定有关代码的Facts and Theories,它可以更好地与TDD/BDD视角下的测试概念进行整合.

xUnit.NET也非常易于扩展.它的FactAttribute和TraitAttribute属性类没有被密封,并且提供了可覆盖的基本方法,这些方法可以让您对如何执行这些属性的方法进行大量控制.虽然xUnit.NET以其默认形式允许您使用其测试方法编写与NUnit测试装置类似的测试类,但您根本不局限于这种形式的单元测试.你可以自由地扩展以支持BDD风格的关注/背景/观察规格的框架,描绘了这里.

xUnit.NET还通过其Theory属性和相应的数据属性直接支持开箱即用的拟合式测试.适合的输入数据可以从excel,数据库甚至自定义数据源(如Word文档)加载(通过扩展基础数据属性.)这使您可以利用单个测试平台进行单元测试和集成测试,可以大大减少产品依赖性和所需的培训.

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


虽然这是一年前的事实,但NUnit已经添加了大部分属性.在NUnit中,您可以以任何方式编写测试.
1.属性上明显不同的名称不会有太大意义.2. NUnit是可扩展的,并且它仍然是可扩展的:?3. nunit支持测试的数据行参数.前一段时间他们在扩展中得到了支持:) 4. Nunit与Moq结合创造了同样的东西.5.对于BDD,我会说specflow,可以很容易地与许多单元测试框架集成.
xUnit没有任何文档!例如:尝试找到'Trait`真正做的事情,或者你是否可以在单亲测试中对不同的测试进行分组(例如``testfixture`中的所有`tests`).nUnit创建了一个很好的分层视图,而不是xUnit的测试平面视图.再加上术语没有意义 - 事实和理论?现实点!那些更好的称为测试和数据.
它不是关于哪些属性可用,而是如何使用它们.xUnit.NET从一开始就被设计为一个高度灵活和可扩展的框架,它不会将您锁定到任何特定的测试方法,并且不需要您定期更新核心框架以获得最新功能.
我喜欢xUnit的声音,但它有zilch文档:(
老实说,我真的不喜欢*xUnit术语.完全转过身来 - 特别是当我可以告诉他们,[它没有添加任何内容](http://xunit.codeplex.com/wikipage?title=Comparisons&referringTitle=Home)更多的"传统"名称/单元测试时.语法不同 - 是的.方法不同 - 没有.(MBUnit,未经比较,对"数据驱动"测试有很好的支持.)
@ColonelPanic:xUnit非常自我解释.下载中包含一个帮助文件,并且有许多各种资源可以解释如何使用可扩展性模型来执行各种操作.两个好的文档页面是[如何](http://xunit.codeplex.com/wikipage?title=HowToUse)和[与其他框架的比较](http://xunit.codeplex.com/wikipage?title=Comparisons) .
正如我在过去所提到的,xUnit.NET并不是关于灵活性的术语.关于xUnit.NET框架的一切都是可扩展的.如果您不喜欢[Fact]和[Trait],您可以自由扩展这些属性并将它们重命名为[Test]和[Property].您也可以自由创建自己的属性,以您希望的方式工作,支持您喜欢的各种测试方法.它不是关于事实和特征......而是关于灵活性,可扩展性和实现目标.
我想我们同意在这里不同意,@ Sid.还有其他方法可以进行软件测试..."经典"nUnit方法不是**唯一有效的方法,也不是唯一有效的术语,我们可以用它来描述测试,或者就此而言*描述我们的软件.*xUnit.NET还可以灵活地构建您自己的测试框架,以独特的方式运行代码.至于报道,我发现xUnit.NET的无聊"扁平"报告非常令人耳目一新......我不是一个挖掘树木来寻找信息的狂热粉丝.

2> Alexander Ko..:

NUnit可能是第三方工具支持的最多.它也比其他三个更长.

我个人并不关心单元测试框架,模拟库是恕我直言,更重要(并锁定你更多).只需选择一个并坚持下去.


我喜欢Moq,RhinoMocks也不错.
检查Pex和Moles也是值得的,摩尔部分特别适用于模拟.
MSpec与NSubstitute和AutoFixture是我的选择.
MSPec与FakeItEasy ...使测试用例更具可读性
什么是你的顶级模拟库选择?

3> Mendelt..:

我不会选择MSTest.虽然它可能是微软背后最具框架性的证据,但它并不是最灵活的解决方案.没有一些黑客攻击它不会独立运行.因此,在没有安装Visual Studio的情况下在TFS以外的构建服务器上运行它很难.visual studio test-runner实际上比Testdriven.Net +任何其他框架慢.并且因为此框架的发行版与Visual Studio的发行版相关联,所以更新较少,如果您必须使用较旧的VS,则需要使用较旧的MSTest.

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

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


我被拖拽和尖叫到同样的结论.我真的很想使用MSTest,因为它与Visual Studio集成,但这也是它的弱点.我需要在非Microsoft构建服务器上运行测试,并且我无法在其上安装Visual Studio以获得它.微软生产出色的工具,然后让它们几乎无法实现,这是一种耻辱.
+1用于呼唤MSTest的可怕性.在一天结束时,使用哪个单元测试框架并不重要,只要它不是MSTest

4> Matt Crouch..:

考虑用另一个测试框架补充而不是替换MSTest.您可以保持Visual Studio 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);
        }
    }
}


"令人惊讶的是,它只是起作用!"你刚从另一个组件中调用了一个静态函数.为什么你觉得它有效?此外,如果您只是需要断言,为什么不使用专门为此制作的组件?

5> Eric..:

Nunit在C++中混合模式项目不能很好地工作,所以我不得不放弃它


我对这个答案并不感到自豪,但我放弃了该项目的单元测试.我使用了很多验证程序来运行时检测错误
我希望在混合模式下使用NUnit,但也发现它不合适,最后我去googletest这是一个优秀的C++单元测试框架,并且设置简单.

6> user8133..:

这在小规模/个人规模上并不是什么大不了的事,但它可以在更大范围内迅速成为更大的交易.我的雇主是一家大型微软商店,但出于多种原因不会/不能购买Team System/TFS.我们目前使用Subversion + Orcas + MBUnit + TestDriven.NET,它运行良好,但获得TD.NET是一个巨大的麻烦.MBUnit + TestDriven.NET的版本敏感性也是一个很大的麻烦,并且有一个额外的商业用途(TD.NET)供法律审查和采购来处理和管理,这并非易事.像许多公司一样,我的公司对MSDN订阅模型很满意,而且它并不习惯于为数百名开发人员处理一次性采购.换句话说,完全集成的MS提供,虽然绝对不是最好的面包,但在我看来是一个重要的增值.

我认为我们将继续我们当前的步骤,因为它的工作原理,我们已经在组织上已经超越了驼峰,但我确实希望MS在这个领域有一个引人注目的产品,所以我们可以整合和简化我们的开发堆栈.


你的回答很好奇,似乎是自相矛盾的.你说你是一个很大的微软商店,但不会使用TFS(这是重点 - 如果没有它,你将无法获得垂直整合的好处)并使用MSDN订阅模式,但是使用非-MS方法.说实话,我迷路了.不幸的是,过时的答案.
ReSharper确实在这个领域提供了引人注目的产品!

7> 小智..:

这不是什么大问题,在它们之间切换非常容易.集成MSTest也不是什么大问题,只需抓住testdriven.net即可.

就像前一个人说的那样挑选一个嘲弄框架,我最喜欢的是Moq.

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有