您如何测试私有方法内部的异常,该方法由 public void 使用?

How do you test for an exception that is inside of a private method, which is used by a public void?

正如标题所说,我正在测试在私有方法中抛出异常,然后通过 public void 访问该异常。任何帮助将不胜感激。

您可以使用Assert.Throws 来检查是否抛出异常。如果没有抛出异常则测试将失败:

var foo = new Foo();
Assert.Throws<MyException>(() => foo.DoSomething());

这个测试需要抛出MyException。如果抛出另一个异常(即使是从 MyException 派生的异常),则测试将失败。

如果你想测试异常或从该异常派生的任何东西,那么你可以使用 Assert.Catch :

var foo = new Foo();
Assert.Catch<MyException>(() => foo.DoSomething());