Nunit可以和C#一起使用吗?应该使用哪种异常断言方法?
我试图使用Assert.DoesNotThrow
,但Microsoft.VisualStudio.TestTools.UnitTesting
无法识别。{/ p>
必须使用哪种异常断言来测试不应抛出异常的情况?
答案 0 :(得分:1)
NUnit实际上是一个.NET库,所以它被创建为与C#一起使用,但我猜这实际上不是你的问题。
我猜你在Visual Studio中创建了一个单元测试项目,它将使用Microsoft's own unit test framework(Microsoft.VisualStudio.TestTools.UnitTesting)创建一个项目。然后你用谷歌搜索“如何断言方法抛出”并在NUnit附近找到结果。
NUnit 也是一个单元测试框架,所以我建议不要同时使用它们。为了只使用NUnit,只需创建一个普通的C#项目并添加一个NUnit引用。
为了在Visual Studio项目中添加NUnit,您应该使用NuGet,除非您有充分的理由不这样做。为此,在创建新的普通C#项目 - 意味着要成为NUnit测试项目之后,右键单击解决方案资源管理器中的项目,然后单击Manage NuGet packages...
。找到NUnit并安装它。这将自动添加对它的引用(并允许您在需要时更新它)。
此外,为了解决您的初始问题,Microsoft Visual Studio框架 有一个断言异常的方法。请参阅here。
话虽这么说,你可以在编写Microsoft单元测试时使用NUnit的断言,你所要做的就是在现有的Microsoft测试项目中引用NUnit。同样,真的不推荐,因为你会同时使用两个框架。
您还可以查找其他可以补充Microsoft自己的断言框架(例如Fluent Assertions)。
或者你可以创建自己的断言方法,类似于:
private static void AssertThrows<T>(Action action) where T: Exception
{
try
{
action();
}
catch (T)
{
return;
}
Assert.Fail("Failed to fail");
}
我真的会建议反对这一点(和编写自己的框架一样有趣),因为你自己编写的测试框架越少越好(Who whatches the watchmen?),你永远不能把它作为功能丰富的并且由于专门的社区(NUnit)或公司(VS测试框架)编写的东西而导致的漏洞。
答案 1 :(得分:0)
您似乎对NUnit(需要installed的单独.NET库)和Visual Studio附带的Visual Studio Unit Testing Framework感到困惑。
他们遵循类似的XUnit patterns,因此您可以使用不同的方法以类似的方式编写测试。
您可以在the Unit Testing Framework Asserts documentation中阅读有关Visual Studio单元测试框架中包含的Assert语句的更多信息。