如何使用nunit和moq进行异常处理?

如何使用nunit和moq进行异常处理?,nunit,nunit-2.5,Nunit,Nunit 2.5,我正在尝试使用nunits新的异常处理方式,但我发现很难找到关于它的信息以及如何在moq中使用它 我现在有一个moq,它在一个模拟方法上抛出一个异常,但我不知道如何使用nunit来捕获它并查看它。为什么不能将模拟方法调用包含在try/catch块中,并捕获抛出的特定异常?有几种不同的方法;我使用Assert.Throws var exception = Assert.Throws<YourTypeOfException>(()=> Action goes here); 最好的

我正在尝试使用nunits新的异常处理方式,但我发现很难找到关于它的信息以及如何在moq中使用它


我现在有一个moq,它在一个模拟方法上抛出一个异常,但我不知道如何使用nunit来捕获它并查看它。

为什么不能将模拟方法调用包含在try/catch块中,并捕获抛出的特定异常?

有几种不同的方法;我使用Assert.Throws

var exception = Assert.Throws<YourTypeOfException>(()=> Action goes here);

最好的方法是:
[ExpectedException(typeof(ApplicationException))]
在测试方法上方。

这种方法的问题是,如果使用ExpectedException属性修饰的方法的任何部分抛出这种类型的异常,测试将通过。使用Assert.Throws机制可以减少表面积,因为异常必须在它运行的方法中抛出。
var exception = Assert
                .Throws<ArgumentNullException>(()=> new ChimpPuncher(null));
Assert.That(exception.Message, Text.Contains("paramname");