如果我同时使用两种陈述
using Microsoft.VisualStudio.TestTools.UnitTesting;
using NUnit.Framework;
我的Assert
方法出错了。有人能告诉我使用它的最佳方法是什么。
我应该用以下内容替换每个Assert
方法吗?
NUnit.Framework.Assert.AreEqual(expectedResult, result);
答案 0 :(得分:3)
正如Jon Skeet在评论中提到的,你应该只使用一个测试框架。他们不会很好地在一起玩。如果你想使用NUnit,你应该
Microsoft.VisualStudio.TestTools.UnitTesting
使用声明。Microsoft.VisualStudio.QualityTools.UnitTestFramework
的引用。您的单元测试最终只会在其中一个测试适配器MSTest或NUnit下运行。每个测试框架的断言都会在断言失败时抛出不同的异常,并且每个测试运行器都希望抛出自己的异常。如果您尝试在测试中使用MSTest断言并且测试失败,NUnit将无法识别作为断言异常抛出的异常,因此它会将其报告为错误而不是测试失败。
您可能最终得到了两个测试框架,因为您在Visual Studio中创建了单元测试项目,然后向其中添加了NUnit。 NUnit测试项目应该只是一个常规的类库。另一个选择是安装NUnit Templates Extension for Visual Studio,它将向Visual Studio添加 NUnit 3单元测试项目模板。
答案 1 :(得分:0)
您可以决定使用NUnit还是内置的Visual Studio单元测试DLL。
NUnit
如果您想使用NUnit,并且听起来好像已经安装了NUnit NuGet软件包,则只需将以下行注释掉即可:
using Microsoft.VisualStudio.TestTools.UnitTesting;
如果您要从项目中真正删除本机Visual Studio单元测试,则可以删除该行并删除对Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
的引用。这不是必需的,但可以防止可能发生的任何“歧义参考”错误。
Visual Studio工具
但是,如果要使用Visual Studio本机工具,则要转到NuGet程序包管理器,找到NUnit程序包,然后选择卸载它,然后在提示上单击“确定”。它将继续删除NUnit DLL和依赖项。您将删除
using NUnit.Framework;
从单元测试课的顶部手动行。您需要确保已引用了Visual Studio单元测试DLL。如果尚未引用它,则需要转到参考>添加参考并浏览到它。它的位置可能因您使用的Visual Studio版本而异。我在这里回答了一个问题:
Where to find "Microsoft.VisualStudio.TestTools.UnitTesting" missing dll?