c# - Azure 管道绑定到 localhost 以进行测试
问题描述
我正在尝试通过启动 Web 服务器并在不同进程中使用 HTTP 请求来访问它,从而在 Azure Pipelines 中运行集成测试。
我收到的错误是
System.AggregateException : One or more errors occurred. (Failed to bind to address http://127.0.0.1:49159: address already in use.)
似乎产生错误的代码是
var builder = new WebHostBuilder()
.UseUrls("http://localhost:49159")
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.Configure(app =>
{
app.Run(handler);
})
.Build();
builder.Start();
我尝试了一堆不同的端口,因此假设您无法绑定到 Azure Pipelines 上的 localhost。
有谁知道是否有办法实现我想用 Azure Pipelines 做的事情?
任何帮助将不胜感激!
解决方案
是的,这绝对是可能的。也许您不止一次地启动了网络主机而不是破坏它(即每个测试夹具等)?
一般来说,这些是在管道中运行集成测试的一些可能方法:
如果您的集成测试是用 .Net 编写的,那么请考虑使用WebApplicationFactory在单个进程中运行服务器和测试。
如果您使用不同的工具进行集成测试,node 的start-server-and-test模块可以很好地启动您的服务器,等待它准备好然后执行测试(您也可以将它用于 .Net 项目)。这是.Net 项目的示例管道。
推荐阅读
- javascript - 打字稿:对象文字只能指定已知属性
- swiftui - 手动从子视图到父视图以及从拖动中解散时如何修复导航栏标题重叠?
- javascript - 用数组过滤对象
- javascript - 如何确定以下 JavaScript 代码为什么会插入两次计时器记录?
- winforms - Winforms PropertyGrid 没有类别
- r - 根据行值添加特定列值
- python - Python为图像中断PNG添加噪声
- r - R中数据包络分析的优势
- postgresql - 带有 DataGrip 的 PostgreSQL - “表不存在”
- c# - 如何在 C# 的 linq 查询中 sql 查询包含行号?