2010-01-01 138 views
7

我正在尝试使用C#进行单元测试。不同的人告诉我要使用NUnit,因为它比MSTest更好(显然,我不知道),并且它在我正在使用的ReSharper中也有很好的支持。如何使用ReSharper创建NUnit测试?

现在我从来没有在我的生活中写过单元测试(跟我一起,我是一名大学生)。 ReSharper有这个很好的CreateUnitTests上下文菜单选项,我已经看到其他人(随便看肩膀)使用取得巨大成功。你右键点击一个方法,选择CreateUnitTests,然后你就可以创建一个测试框架。你只需填写重要的部分。

现在,当我尝试相同的时候,ReSharper希望我创建一个新的测试项目......当我让它时,它创建(我假设)一个MSTest项目,显然是一个MSTest测试模板。但我已经有了一个引用“nunit.framework”的类libarary项目,并且有几个NUnit测试,ReSharper更愿意运行。不过,它只能创建MSTest测试模板,并且只能在特殊的“测试项目”项目中使用。

我在做什么错?我是否做错了什么,或者正在创建ReSharper不可能的NUnit测试模板?我搜索了网络,阅读了ReSharper和NUnit的文档,我仍然无法弄清楚这是甚至可能的或什么。

如果有人能为我提供一个使用ReSharper + NUnit的指南,我将不胜感激。

编辑:我使用ReSharper的4.5和NUnit 2.5.3

EDIT2:显然,我是个白痴。 CreateUnitTests不是ReSharper的一部分,而是Visual Studio的一部分,因此只能用于MSTest。

回答

12

在您的Resharper创建的测试项目中,删除对Microsoft单元测试DLL的引用(我不记得名称为off,但名称相当长)。

然后添加一个新的引用--nunit.framework.dll,你应该在添加引用对话框的第一个选项卡上找到它。

using NUnit.Framework添加到单元测试类文件。

然后,您需要更改属性:

[TestClass] to [TestFixture] 
[TestMethod] to [Test] 

所以,如果你结束了一个MSTest的项目,使用上面的步骤来代替NUnit的。

注意:resharper 4.5以上不支持运行MSTest以及NUNit测试。所以你可以尝试一下。

+1

但是,增加与CreateUnitTests新的考验又增加了对Microsoft测试DLL和再次使用的TestClass代替的TestFixture等等......我不得不删除这些非常时间?这是否意味着ReSharper只能创建MSTest测试模板? – Lucas 2010-01-01 22:53:33

+3

我不熟悉Resharper的选项 - 你确定它是Resharper给你创建单元测试的选项吗?我使用Visual Studio 2008 Team System,当我右键单击某个方法时,我会看到“创建单元测试”选项。由于这是VS的一部分,它将始终使用MSTest。我不确定它是否是Resharper这样做的。要找出的一个是禁用Resharper(工具 - > Addins),并创建一个单元测试,如果它使用MSTest,那么它不是Resharper。 – 2010-01-01 22:59:39

+0

啊,我明白了。显然我是个白痴。 – Lucas 2010-01-01 23:03:05

5

你不需要运行任何向导来使用NUnit。您可以创建一个类库,添加对NUnit的引用,并用相应的属性标记您的测试。奇才仅适用于MSTest,即使如此,也不是必需的。

一旦你进行了单元测试,ReSharper测试运行器将检测到它们,在左边空白处,你会看到一些图标,允许你运行/调试测试。看到第一个图像这里的一个例子:

NUnit and ReSharper