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

标签 c# asp.net unit-testing email console-application

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

  • 测试数据不要太长
  • 测试数据匹配正则表达式
  • 有测试数据

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

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

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

谢谢, 迈克。

最佳答案

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

关于C# .NET 单元测试 - 如何停止执行捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32944756/

相关文章:

c# - 鼠标无法在 Winforms 中使用 Monogame

asp.net - 如何在 ASP NET MVC 6 中更新模型?

asp.net - 服务器错误 - 由于以下错误 : 80070005 Access is denied,检索具有 CLSID 的组件的 COM 类工厂失败

java - ajax MVc return从return中选择单个div。/

unit-testing - AngularJS 中的单元测试指令 Controller

unit-testing - 如何在 MS 单元测试框架 VS 2010 中输出日志

c# - 如何对返回 JsonResult 的 Action 方法进行单元测试?

C# MYSQL 的安全连接信息

c# - 使用 itextsharp 将 html 生成为 pdf

c# - 如何在 EF.core 中使用 FromSqlRaw 特定列