使用MSTest和NUnit?

阅读MSTest和NUnit我无法真正地决定在我的项目中使用什么.我们使用TFS 2008和VS2010.

我喜欢MSTest,因为它融入了VS2010,持续集成和代码覆盖率报告.
我喜欢NUnit,因为它允许以一种漂亮,可读的方式来形成复杂的assert语句.

绊倒在http://alsagile.com/archive/2010/03/09/stop-the-war-between-nunit-and-mstest-make-them.aspx我问社区:是否可以同时使用?

我也考虑坚持MSTest,并使用http://fluentassertions.codeplex.com给我一个更灵活的方式来制定assert语句.这不是最好的选择吗?

我个人不喜欢混合两个框架的想法,就像您所指的article中所提到的那样.

在两个测试框架下运行单元测试的可能条件可能是您不想要或不能在连续集成服务器上安装Visual Studio.

只是为了澄清,MSTest不是在Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll程序集中定义的Visual Studio单元测试框架.

为了能够让你的单元测试运行在两个框架下,你需要定义一个构建常量(这里是NUNIT),并在preprocessor directivesnamespace aliases的帮助下,你会得到一个这样的代码片段:

#if !NUNIT
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Category = Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute;
#else
using NUnit.Framework;
using TestInitialize = NUnit.Framework.SetUpAttribute;
using TestContext = System.Object;
using TestProperty = NUnit.Framework.PropertyAttribute;
using TestClass = NUnit.Framework.TestFixtureAttribute;
using TestMethod = NUnit.Framework.TestAttribute;
using TestCleanup = NUnit.Framework.TearDownAttribute;
#endif

我相信这个想法首先通过这个MSDN Magazine article.另一个值得的博客文章涵盖这个话题将是:

> Using nUnit AND Mstest (Visual Studio Unit Testing) together in perfect harmony

对你的最后一个问题:Fluent Assertions项目似乎是一个很好的图书馆.如果你喜欢流利的风格,我不会看到任何真正的原因,你不应该使用它.

翻译自:https://stackoverflow.com/questions/5053557/using-both-mstest-and-nunit

转载注明原文:使用MSTest和NUnit?