Nunit可以与Visual C#一起使用吗?应该使用哪种异常断言?

时间:2015-10-20 10:09:33

标签: c#

Nunit可以和C#一起使用吗?应该使用哪种异常断言方法?

我试图使用Assert.DoesNotThrow,但Microsoft.VisualStudio.TestTools.UnitTesting无法识别。{/ p>

必须使用哪种异常断言来测试不应抛出异常的情况?

2 个答案:

答案 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语句的更多信息。