繁体   English   中英

.Net Framework 4.6.1 MVC 集成测试

[英].Net Framework 4.6.1 MVC integration testing

我很难找到有关如何在我的旧 Net Framework 4.6.1 MVC 应用程序上运行集成测试的资源。 我尝试了很多我找到的指南,但出于某种原因,它们都不起作用。

我的应用程序太大了,可以将其升级到 Net 6,这将使该测试更加容易。 我尝试运行 OWIN TestServer,但它总是导致 404 错误。

所以我想知道,如何在旧的 mvc 上进行集成测试? 我是否按照正确的路径使用 OWIN TestServer 寻找解决方案? 还有什么我可以尝试的吗? 也想到了 Selenium,但无法让它启动一个假服务器来自动运行测试,我需要一个命令来初始化我在 IIS 上的应用程序,我们需要测试通过 azure CI 管道自动运行。

我的应用程序很旧,所以我尝试删除 Global.asax 并通过 Startup.cs 仅使用 owin 管道,但它显示错误消息“未找到与请求 uri 匹配的 HTTP 资源”,尝试了许多针对路由配置的修复等,没有成功。 尝试在解决方案上同时使用 global.asax 和 startup.cs 运行 OWIN TestServer 但没有成功,也尝试了 Selenium 但它不会自动启动假服务器,最好是在 memory 中,就像最新版本的 TestServer for .net core + 一样。

也试过以下: https://www.strathweb.com/2013/12/owin-memory-integration-testing/

有许多基于 .Net 框架的巨大的、有效的、遗留的产品。 它们是几年前(比方说 8-10 年)设计的。 所以那个时候测试堆栈不像现在这样。 除了单元测试(在 .Net 框架中完全支持)之外,您还可以进行集成和端到端测试,尽管不像在 .Net(核心)中那样简单。 这些是我在为一个巨大的.Net框架产品设计有效测试集的案例中的经验:

  1. 单元测试可以完美完成
  2. 如果你在 api/mvc 控制器之前有一个服务层,你可以有一组自动集成测试(没有模拟)。 您需要使用某种数据库还原(我们使用 sql 快照,因为它的速度)。 这套服务层测试在我们的QA中起到了重要的作用。
  3. 您需要设置 CI/CD 工具,例如 Azure DevOps 或 Jenkins(我们使用后者)才能进行真正的端到端测试。 对于每个版本,您至少需要将系统的 1 个已部署实例(我们有数十个,因为我们的产品可能具有几种常见的有效配置)才能暴露给自动化 Selenium 测试。

尽管可以在控制器上进行测试(请参阅此处),但我们发现开发和维护我们的产品非常繁重。 但对你来说它可能是合适的。

此外,我建议有一个迁移项目。 首先尽量让你的代码更新到最新的 .Net 框架版本(这并不难)。 如果用并行团队重写代码不是一种选择(虽然它需要大量资源,但它仍然不那么痛苦,)。 您可以考虑逐步更改模块/域并将非技术密集型代码移动到 .Net 标准库(可以在 .net 框架和 .Net 中使用),还可以考虑将模块/域提取到 .Net 微服务中一。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM