C# .NET 单元测试 - 如何停止执行捕获

C# .NET Unit Testing - How to Stop Executing a Catch

我构建了一个用于导入 CSV 数据的控制台行应用程序,根据一组约束进行验证,然后在通过所有验证后将其添加到数据库中。因此,我为常见的 类 开发了一些 类,例如:-

这些都有自己的 try-catch 块,在 try-catch 块中,我将其设置为将电子邮件发送到带有异常的通用收件箱。这是它上线时的要求,因此我们知道是否出现故障。

我已经编写了单元测试来调用这些函数,并特意调用这些函数以破坏它们以查看应用程序的执行情况和这些测试的结果。但是,当然,当它中断时它会遇到异常,然后向我发送这封电子邮件。这正在扼杀我的测试,每个测试都从 <1ms 到 10-15secs,每次我们测试时我们都会收到这个垃圾邮件。然而,我们需要在项目上线时保留这些测试。

是否有某种方法可以指定测试不会发送电子邮件,或者 #debug 命令可以在这里工作?

谢谢, 迈克.

正确的答案是将发送到接口的电子邮件抽象出来,该接口可以通过构造函数注入 class。然后,您可以使用 Moq 等框架模拟该接口进行单元测试,从而验证对 IEmailer.Send 的调用是否发生,而无需实际发送这些电子邮件。