我可以发誓我已经使用 NUnit 的 Assert.Throws 来确定某个方法是否抛出了特定的异常,但是我之前的记忆让我失望了。我在 SO 上阅读了这篇文章,但它没有回答我的问题,因为我知道正确的语法,并且我不想对返回的异常做任何事情(我不想查看异常成员,尽管这在以后可能会有用)。
我编写了单元测试来证明我对 Dictionary 的使用缺乏了解,并且无法让它处理抛出的 KeyNotFoundException。当我运行时,我得到一个未处理的 KeyNotFoundException 错误,而不是 NUnit 捕获它并通过测试。我确认我没有设置 VS IDE 来中断抛出的 .NET 异常。
我试过这两种方法:
Assert.Throws( typeof(KeyNotFoundException), () => value = prefs["doesn't exist"]);
和
Assert.Throws<KeyNotFoundException>( () => value = prefs["doesn't exist"]);
但两者都会导致未处理的异常。我在这里想念什么?
UPDATE似乎其他人无法重现这一点。这是一个屏幕截图: