Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用NUnit 2.6检查异常的属性_C#_Nunit - Fatal编程技术网

C# 使用NUnit 2.6检查异常的属性

C# 使用NUnit 2.6检查异常的属性,c#,nunit,C#,Nunit,NUnit2.6最惯用的检查异常属性相等性的方法是什么 我想写代码,但不起作用:预期为3,但实际为 编辑事实上,第一个代码示例确实有效。我不知道为什么在发布这个问题之前它几次都不起作用我会这样说: var exception = Assert.Throws<SomeException>(() => someObject.MethodThrows(), "Exception expected

NUnit2.6最惯用的检查异常属性相等性的方法是什么

我想写代码,但不起作用:预期为3,但实际为

编辑事实上,第一个代码示例确实有效。我不知道为什么在发布这个问题之前它几次都不起作用

我会这样说:

var exception = Assert.Throws<SomeException>(() => someObject.MethodThrows(),
                                             "Exception expected")
Assert.AreEqual(3, exception.Data.Count);
var exception=Assert.Throws(()=>someObject.MethodThrows(),
“预期例外情况”)
aresequal(3,exception.Data.Count);
这是你能得到的最清晰的信息:

  • 与第一个示例不同,这是重构安全的
  • 它一次声明一件事,而不是像您的两个示例那样声明多件事

我无法与NUnit 2.6通话,但在NUnit 2.5上进行以下测试:

公共类MyException
继承异常
公共属性SomeList作为来自{“hello”,“world”}的新列表(字符串)
末级
公共类TestClass1
公共共享子剂量表()
抛出新的MyException()
端接头
公共子测试示例()
Assert.That(Sub()DoSomething(),Throws.TypeOf(属于MyException)With.Property(“SomeList”).Count.EqualTo(3))
端接头
末级
生成以下错误消息:

应为:属性SomeList属性计数等于3
但是是:<“你好”,“世界”>

这可能只是NUnit 2.6 beta版中的回归吗?

但这仍然与我的代码相同,只是将
异常
设置为局部变量?是的,当然。您正在断言两件事,因此您应该有两个断言。Daniel,沿着
Assert.That(()=>o.Throws(),Throws.TypeOf().With.Message.Contains(“xxx”)?在我看来,这两个都很有趣similar@knittl字体是的。我也不喜欢这个例子。正如我所说:每行一个断言,而不是多个。顺便问一下:为什么您在第一个示例中使用.Property(“Data”)
而不是.Data呢?@knittl:BTW:我认为您的第一个示例是正确的。数据不包含任何内容,这就是消息告诉您的!嗯,我的代码肯定有其他问题。它现在可以工作了:-/附带说明:uuuagh,vb.net!!很高兴听到它工作了,就VB.NET而言。。嗯,它支付账单和更多:P
  Assert.AreEqual(3,
    Assert.Throws<SomeException>(
      () => someObject.MethodThrows(),
      "Exception expected").Data.Count);
var exception = Assert.Throws<SomeException>(() => someObject.MethodThrows(),
                                             "Exception expected")
Assert.AreEqual(3, exception.Data.Count);