azure - Azure DevOps 在开发环境中运行单元测试用例
问题描述
我在 dev/test/db 服务器上运行的单元测试用例很少。开发/测试服务器是内部服务器,位于防火墙后面。我已将这些服务器添加到 Azure DEVOPS 的部署组中。
尝试从 Azure Devops 运行测试用例时出现错误“无法访问远程服务器”。azure devops 如何连接到防火墙后面的远程服务器并在发布中部署代码?以及我需要做什么才能将这些测试用例执行到远程服务器。
解决方案
- 单元测试不应该访问数据库。数据库被认为是一个外部依赖,应该被模拟。最好的情况,如果使用像 Enity Framework 这样的工具,你可以使用对内存数据库的支持来进行测试。但即使是测试/内存数据库也不提供完整的功能支持。
- 部署组是一种优化部署的方法,它通过在其自身的服务器上安装代理并通过您分配的标签将部署限制到特定服务器。他们没有在目标服务器上设置任何防火墙规则
您尝试执行的测试更多的是集成/回归(我知道有很多关于测试命名的讨论)。您需要一个适当的测试环境来执行这些类型的测试。
每次你得到一个构建代理(想象一下它就像你的“vm”)并运行你的测试时,它都会尝试访问你的数据库。
如果您需要(出于特定原因,我根本不建议)快速和肮脏,您可以禁用测试数据库中的防火墙规则。
另一个稍微好一点的解决方案是,如果您有自托管代理,您可以将服务器的 IP 列入白名单
推荐阅读
- macos - 无法设置名为 token 的环境变量
- node.js - “webpack”和“npx-webpack”命令在安装后不起作用
- reactjs - React useState 不使用 requestAnimationFrame 更新
- json - 如何自定义flask错误:JSON正文或post正文或查询字符串中缺少必填参数
- python - Boto3 发送批量电子邮件的方式,带有附件和下载链接
- android - Google play services 登录成功但抛出 ApiException: 8
- tensorflow - 访问在 tf.keras.layers.Layer 子类化中定义的层的输出
- pine-script - 在 PineScript 中检查过去的蜡烛是否是同一类型
- elasticsearch - Elasticsearch 简单查询字符串和荧光笔导致超时
- reactjs - react redux - TypeError:actionName不是一个函数