我有一个.NET Core web API项目,因为某些原因,在该项目中创建了一个后台服务,并在应用程序启动时开始运行该后台服务。
因此,我们创建了一个BackgroundWorkerService
,该服务继承自 BackgroundService(Microsoft.Extensions.Hosting),如下所示:
public class BackgroundWorkerService : BackgroundService
{
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
await DoWork(stoppingToken);
}
public override async Task StartAsync(CancellationToken cancellationToken)
{
await ExecuteAsync(cancellationToken);
}
public override Task StopAsync(CancellationToken cancellationToken)
{
return Task.CompletedTask;
}
}
为了在应用程序启动时运行它,我将后台服务添加到 Program.cs 中托管的服务中:
.ConfigureServices(services =>
services.AddHostedService<BackgroundWorkerService>());
现在,我们需要创建一个集成测试,并且在运行集成测试时停止后台服务。
有人知道如何在集成测试中停止它吗?我已经尝试从ConfigureTestServices中移除服务,但没有成功,当集成测试开始时后台服务仍在运行。
StartAsync
和StopAsync
方法? - Stephen ClearyExecuteAsync
方法。StartAsync
和StopAsync
方法已经被BackgroundService
类型实现了。 - Stephen Cleary