相关疑难解决方法(0)

托管服务集成测试.Net-Core`

我有一个QueueTask托管服务(.Net-Core的新后台服务),我想测试.我的queuedHosted服务看起来像这样:

public QueuedHostedService(IServiceProvider serviceProvider, IBackgroundTaskQueue taskQueue, ILoggerFactory loggerFactory)
{
    TaskQueue = taskQueue;
    _logger = loggerFactory.CreateLogger<QueuedHostedService>();
    _serviceProvider = serviceProvider;
}

protected async override Task ExecuteAsync(CancellationToken stoppingToken)
{
    using (var scope = _serviceProvider.CreateScope())
    {
        while (false == stoppingToken.IsCancellationRequested)
        {
            var workItem = await TaskQueue.DequeueAsync(stoppingToken);
            try
            {
                await workItem(scope.ServiceProvider, stoppingToken);
            }
            catch (Exception ex)
            {
                this._logger.LogError(ex, $"Error occurred executing {nameof(workItem)}.");
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它只是从队列中读取任务并在它们进入时执行它们.我已经验证了托管服务正在生产中.我为它写了一个测试:

[TestMethod]
public async Task Verify_Hosted_Service_Executes_Task()
{
    IServiceCollection services = new ServiceCollection();
    services.AddSingleton<ILoggerFactory, NullLoggerFactory>();
    services.AddHostedService<QueuedHostedService>();
    services.AddSingleton<IBackgroundTaskQueue, BackgroundTaskQueue>();
    var serviceProvider …
Run Code Online (Sandbox Code Playgroud)

c# mstest .net-core asp.net-core asp.net-core-hosted-services

11
推荐指数
1
解决办法
2639
查看次数

.Net Core 3 Worker 集成测试

对于集成测试 Asp.Net Core 应用程序,我们有WebApplicationFactory。但是如何测试不是 Web 应用程序的Worker( ) 呢?HostedService我不想像这个问题那样复制 SUT 中的整个 DI 配置。是否可以使用原始配置并覆盖一些依赖项,就像我们在WebApplicationFactory.WithWebHostBuilder中对 Web 应用程序所做的那样?

.net-core asp.net-core .net-core-3.0

11
推荐指数
1
解决办法
2735
查看次数