У меня есть фоновая задача, инициированная при запуске .net core 2.0, наследуемая от backgroundservice, реализующая StartAsync, StopAsync и ExecuteAsync. Эта задача заключается в периодическом обновлении некоторых данных в таблице базы данных на основе некоторой бизнес-логики.
Хотя я могу запускать фоновую задачу как приложение и тестировать с помощью журналов, проверки базы данных и с помощью других инструментов, может ли модульное тестирование необходимо для тестирования фоновой задачи? Если да, то как зарегистрировать задачу как службу с зависимостями и запустить методы запуска и остановки, чтобы подтвердить фактическое и ожидаемое? Оцените базовый пример метода модульного тестирования при тестировании фоновой задачи .net core ihostedservice на основе таймера.
Вот мой базовый тест, начинающийся только для примера, но еще не завершенный. Сказав это, это всего лишь мысль, а не точный рабочий тест. Вот что нужно помощь от сообщества. Можно также добавить еще несколько утверждений, например, Assert.Verify()?
[Fact]
public async void Run_background_task_success()
{
//Arrange
IServiceCollection services = new ServiceCollection();
services.AddHostedService<BackgroundManagerTask>();
var serviceProvider = services.BuildServiceProvider();
var service = serviceProvider.GetService<IHostedService>() as BackgroundManagerTask;
var isExecuted = false;
if(await service.StartAsync(CancellationToken.None))
{
isExecuted = true;
}
await Task.Delay(10000);
Assert.True(isExecuted);
await service.StopAsync(CancellationToken.None);
}