为什么不是';这个NUnit测试不捕获我的异常吗?

为什么不是';这个NUnit测试不捕获我的异常吗?,nunit,nunit-3.0,Nunit,Nunit 3.0,我有一个简单的NUnit测试: [Test] public void Invalid_ID_throws_an_exception() { var zero = 0; var negativeNumber = -9; Assert.Throws<ArgumentOutOfRangeException>(() => edsp.PersonInfoById(zero)); Assert.Throws<ArgumentOutOfRangeExceptio

我有一个简单的NUnit测试:

[Test]
public void Invalid_ID_throws_an_exception()
{
   var zero = 0;
   var negativeNumber = -9;
   Assert.Throws<ArgumentOutOfRangeException>(() => edsp.PersonInfoById(zero));
   Assert.Throws<ArgumentOutOfRangeException>(() => edsp.PersonInfoById(negativeNumber));
}
我做错了什么


编辑:此外,出于某种原因,我的调试器没有进入我的测试方法
edsp.PersonInfoById
——尽管在调试时单击了“单步执行”,但仍会直接在其上执行操作。

如果通过对结果调用
.ToList()
强制枚举,则测试通过

例如:

[测试]
public void无效\u ID\u抛出\u异常()
{
var 0=0;
var NegativeEnumber=-9;
Assert.Throws(()=>edsp.PersonInfo(零).ToList());
Assert.Throws(()=>edsp.PersonInfoById(negativeEnumber.ToList());
}

您正在调用的方法和显示的方法具有不同的名称。这只是一个输入错误吗?是的,更正了-thx@charlie如果您通过对结果调用
.ToList()
来强制枚举,则测试通过。例如,
edsp.personinfo(zero.ToList()
@srk post作为答案,我会接受的。
public IEnumerable<PersonInfo> PersonInfoById(int id)
{
   if (id <= 0) 
     throw new ArgumentOutOfRangeException(nameof(id), "ID must be greater than zero");

   yield return new PersonInfo();
}
 Message: 
      Expected: <System.ArgumentOutOfRangeException>
      But was:  null