【问题标题】:Assert C# (socialable) unit test does not use HTTP断言 C# (socialable) 单元测试不使用 HTTP
【发布时间】:2019-12-02 23:54:29
【问题描述】:

我们正在构建一些“sociable”单元测试(大于“单元”的测试,但明确不调用外部服务或数据库)。我想知道如果未来的开发人员编写了一个调用的测试,C# 中是否有办法让测试运行程序抛出异常。

不幸的是,我们的系统使用多种调用外部服务的方法——RestSharp 调用、HttpClient 调用、WCF 服务调用以及 SQL Server。如果它只是一个,我会嘲笑它并抛出一个异常,但因为我有很多不同的地方可以调用,我想知道是否有办法同时阻止所有这些。 (知道 SQL Server 可能是另一种野兽)

【问题讨论】:

  • 这是一个集成测试,你这样做的方法是在 CI 上的一个隔离环境中运行它(例如,将你的代码部署到 Docker 容器或类似容器中,然后杀死它上面的所有网络。如果测试失败 -> 有人大惊小怪)

标签: c# unit-testing testing nunit


【解决方案1】:

一种方法是阻止防火墙中测试运行程序可执行文件的所有传出流量。

在 CI 机器上,为 test runner 可执行文件添加一条规则,例如“nunit3-console.exe”,并将其设置为阻止所有传出流量。

这不会阻止人们在本地运行愚蠢的测试,但在 CI 服务器上运行时测试可能会失败。

【讨论】:

  • 我觉得这个解决方案会阻止我们在未来运行实际的集成测试?
  • 不,您可以只拥有测试运行程序可执行文件的两个副本。一份用于单元测试,另一份用于集成测试。防火墙规则适用于可执行文件的完整路径。
猜你喜欢
  • 2019-04-26
  • 2014-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多