集成测试.NET Code 2.2 IHostBuilder(通用主机生成器)

Dud*_*001 7 c# integration-testing .net-core-2.2

我正在使用.NET Core 2.2 IHostBuilder(通用主机生成器)来构建运行消息流应用程序的控制台应用程序作为BackgroundService(IHostedService)。 https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/host/generic-host?view=aspnetcore-2.2

这不是通常用于托管ASP.NET Core Web应用程序的IWebHostBuilder。

我想构建一些基本的集成测试来验证正常关机和IoC配置。我想启动一个承载我的IHostBuilder主机的TestServer。我不需要满足任何要求。

我已经使用Microsoft.AspNetCore.TestHost中的IWebHostBuilder和TestServer完成了这种事情。但是,不支持IHostBuilder,仅支持IWebHostBuilder。 https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.aspnetcore.testhost.testserver.-ctor?view=aspnetcore-2.2#Microsoft_AspNetCore_TestHost_TestServer__ctor_Microsoft_AspNetCore_Hosting_IWebHostBuilder_

我知道IHostBuilder将取代.NET Core 3.0中的IWebHostBuilder,而TestServer将支持此功能。试图找到一种在.NET Core 2.2中执行此操作的方法。

poi*_*ida 0

我意识到这可能不是您想要的,但您可以使用脚本进行测试。

它检查应用程序在启动时不会崩溃,并且可以使用 停止它SIGTERM

test-start-stop.sh:

#!/usr/bin/bash

# Exit on error
# /sf/ask/1373553891/
set -e

# Publish binary
# https://learn.microsoft.com/en-us/dotnet/core/rid-catalog
dotnet publish -r linux-x64 -o publish app

# Run in background and save process ID
# /sf/ask/133602731/
./app/publish/app & 
APP_PID=$!

# Wait until app is started
sleep 5s

# Send SIGTERM
kill -SIGTERM $APP_PID

# Wait for process exit
wait $APP_PID
Run Code Online (Sandbox Code Playgroud)