NUnit Assert方法错误,因为它可以在NUnit.Framework和Microsoft.VisualStudio.TestTools.UnitTesting命名空间中找到

如果我同时使用这两个语句

using Microsoft.VisualStudio.TestTools.UnitTesting; using NUnit.Framework; 

我收到Assert方法的错误。 有人能告诉我使用它的最佳方法是什么。

我应该用以下方法替换每个Assert方法吗?

 NUnit.Framework.Assert.AreEqual(expectedResult, result); 

正如Jon Skeet在他的评论中提到的,你应该只使用一个测试框架。 他们不会很好地在一起玩。 如果你想使用NUnit,你应该,

  1. 使用语句删除所有Microsoft.VisualStudio.TestTools.UnitTesting
  2. 从项目引用中删除对Microsoft.VisualStudio.QualityTools.UnitTestFramework的引用。

您的unit testing最终将在其中一个测试适配器MSTest或NUnit下运行。 每个测试框架的断言都会在断言失败时抛出不同的exception,并且每个测试运行器都希望抛出自己的exception。 如果您尝试在测试中使用MSTest断言并且测试失败,NUnit将无法识别作为断言exception抛出的exception,因此它会将其报告为错误而不是测试失败。

您可能最终得到了两个测试框架,因为您在Visual Studio中创建了一个unit testing项目 ,然后将NUnit添加到它。 NUnit测试项目应该只是一个普通的类库 。 另一种选择是安装Visual Studio的NUnit模板扩展 ,它将向Visual Studio添加NUnit 3unit testing项目模板。

您可以决定使用NUnit或内置的Visual Studiounit testingDLL。

NUnit的
如果你想使用NUnit,听起来你已经安装了NUnit NuGet包,你只需注释掉该行:

 using Microsoft.VisualStudio.TestTools.UnitTesting; 

如果要从项目中删除本机Visual Studiounit testing,可以删除该行并删除对Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll的引用。 这不应该是必需的,但它可以防止可能发生的任何“模糊引用”错误。

Visual Studio工具
但是,如果要使用Visual Studio本机工具,则需要转到NuGet包管理器,找到NUnit包,然后选择卸载它并在提示符上单击“确定”。 它将继续删除NUnit DLL和依赖项。 你会删除

 using NUnit.Framework; 

从Unit Test类的顶部手动排队。 您需要确保引用了Visual Studiounit testingDLL。 如果您没有引用它,则需要转到参考>添加引用并浏览到它。 它的位置可能会有所不同,具体取决于您拥有的Visual Studio版本。 我回答了一个问题,这里:

哪里可以找到“Microsoft.VisualStudio.TestTools.UnitTesting”缺少dll?