使用NUnit 2.6检查异常的属性

本文关键字:异常 属性 检查 NUnit 使用 | 更新日期: 2023-09-27 18:07:17

NUnit 2.6检查异常属性是否相等的最惯用的方法是什么?

我想写的

代码,但是不能工作:Expected 3, but was <empty>

Assert.That(() => someObject.MethodThrows(),
  Throws.TypeOf<SomeException>().With.Property("Data").Count.EqualTo(3), /* Data is a collection */
  "Exception expected");

我可以使用嵌套的Assert表达式,但这似乎过于复杂和不必要:

  Assert.AreEqual(3,
    Assert.Throws<SomeException>(
      () => someObject.MethodThrows(),
      "Exception expected").Data.Count);

edit实际上,第一个代码示例确实有效。我不知道为什么在发布这个问题之前它没有工作几次

使用NUnit 2.6检查异常的属性

我不能对NUnit 2.6说话,但在NUnit 2.5上进行以下测试:

Public Class MyException
    Inherits Exception
    Public Property SomeList As New List(Of String) From {"hello", "world"}
End Class
<TestFixture()>
Public Class TestClass1
    Public Shared Sub DoSomething()
        Throw New MyException()
    End Sub
    <Test()>
    Public Sub TestExample()
        Assert.That(Sub() DoSomething(), Throws.TypeOf(Of MyException)().With.Property("SomeList").Count.EqualTo(3))
    End Sub
End Class

产生以下错误消息:

Expected: <ClassLibrary1.MyException> and property SomeList property Count equal to 3
But was:  < "hello", "world" >

这可能只是NUnit 2.6测试版的回归吗?

我会选择这个:

var exception = Assert.Throws<SomeException>(() => someObject.MethodThrows(),
                                             "Exception expected")
Assert.AreEqual(3, exception.Data.Count);

这是你能得到的最清晰的:

    不像你的第一个例子,这是重构安全的
  • 它一次断言一件事,而不是像你的两个例子那样多个。