在NUnit中,我如何明确地通过测试

在NUnit中,我如何明确地通过测试,nunit,Nunit,例如下面的代码 [Test()] 公开无效测试() { 试一试{ GetNumber(); } 捕获(例外情况除外){ /*在这里失败*/ } ... } 当GetNumber方法引发异常时,我希望测试失败 请告知 非常感谢。所有测试都应该通过,如果您希望出现异常,则应该使用属性。如果您的代码抛出预期的异常,测试将通过。Assert.Fail(): 不过,可能有一个断言Assert.NoThrow或类似的东西,可以确保您的方法不会抛出。您不需要在try/catch中包装GetNumber()。

例如下面的代码

[Test()]
公开无效测试()
{
试一试{
GetNumber();
}
捕获(例外情况除外){
/*在这里失败*/
}
...
}
当GetNumber方法引发异常时,我希望测试失败

请告知


非常感谢。

所有测试都应该通过,如果您希望出现异常,则应该使用属性。如果您的代码抛出预期的异常,测试将通过。

Assert.Fail():


不过,可能有一个断言Assert.NoThrow或类似的东西,可以确保您的方法不会抛出。

您不需要在try/catch中包装GetNumber()。如果GetNumber()抛出,测试将失败

如果需要显式地失败,请使用()

如果
GetNumber()
返回一个值,则不应执行您试图执行的操作。相反,您应该断言返回值。如果您不希望出现异常,请不要费心检查异常。NUnit框架将解决这一问题,并使您的测试失败

如果
GetNumber()
不返回值,可以执行以下三种操作之一:

  • 使用-这非常明确地记录了意图
  • 正如其他人所建议的,您可以简单地选择不捕获异常。测试失败已经由异常发出信号。任何未捕获的异常都会导致测试失败
  • 如果您有很好的理由让逻辑显式失败或通过测试,并且没有其他可以替代的断言块(更好地记录测试意图的断言块),请使用
  • 在这种情况下,第一个选项是最明确的。如果您可以验证的唯一有趣的副作用是抛出异常,则这是常见的。但是如果<代码> GETNUMENSE()/COD>不返回一个值,您应该真正考虑重命名方法:


    测试失败相当于从中抛出异常。因此,如果您的方法抛出,测试将失败。

    检查新版本。NP出于某种原因,我通常会在谷歌上找到NUnits文档的旧版本:)顺便说一句,如果你发现自己处于第三种情况,因为你有复杂的验证逻辑,你可能会想试试。不过,您在这里没有执行非常复杂的断言,所以我将它保存到另一个测试用例:)在这个特定的用例中,您应该使用
    Assert.DoesNotThrow(()=>GetNumber())
    [Test()]
    public void Test( )
    {
        GetNumber();
    }