我很难找到如何在我的旧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,但它不会自动启动一个假服务器,最好是在内存中,就像最新版本的TestServer for net core+一样。
也尝试以下操作:https://www.strathweb.com/2013/12/owin-memory-integration-testing/
1条答案
按热度按时间nimxete21#
有很多基于.Net框架的巨大的、有效的、遗留的产品。(比如说8-10)之前。所以那个时间测试栈不像现在这样。除了单元测试(在.Net框架中完全支持)您还可以进行集成和端到端测试,虽然不像在.Net(core)中那样简单。下面是我在为一个巨大的.Net框架产品设计有效测试集时的经验:
1.单元测试可以完美完成
1.如果你有一个服务层在你的api/mvc控制器之前,你可以有一套自动化的集成测试(没有模拟)。你需要使用某种数据库恢复(我们使用sql快照,因为它的速度)。这套服务层测试在我们的QA中扮演着重要的角色。
1.您需要设置CI/CD工具,如Azure DevOps或Jenkins(我们使用后者),以进行真实的的端到端测试。对于每个版本,您需要至少一个部署的系统示例(我们有几十个,因为我们的产品可能具有几种常见的有效配置),以暴露给自动化Selenium测试。
虽然可以在控制器上进行测试(参见here),但我们发现开发和维护我们的产品非常繁重。但对于您的产品来说,这可能是合适的。
更多的是,我建议有一个迁移项目。首先,尝试让你的代码更新到最新的。Net框架版本(这并不难)。如果与并行团队一起重写代码不是一种选择(虽然需要巨大的资源,但它仍然是不那么痛苦的一个!),您可以考虑一步一步地更改模块/域,并将非技术密集型代码移到.Net标准库中(它可以在. netframework和.Net中使用),还可以考虑将模块/域逐个提取到.Net微服务中。