Интеграционное тестирование. NET Core 3 Worker - PullRequest
0 голосов
/ 27 марта 2020

ASP. NET Ядро имеет WebApplicationFactory<T>, которое можно использовать для запуска тестового хоста в целях интеграционного тестирования.

Есть ли эквивалент для не ASP. NET основного проекта? Я думаю о «. NET Базовом рабочем шаблоне службы», например. Он не имеет никаких ссылок на ASP. NET Core, но использует общий c хост.

Например, у меня есть проект, подобный этому, размещенный как windows служба. Я хотел бы создать интеграционные тесты так же легко, как и для ASP. NET Базовых проектов (где я могу повторно использовать DI из файла запуска, поэтому мне не нужно настраивать его в тесте.

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureAppConfiguration((context, builder) =>
            {
                builder.AddAppSettings(context.HostingEnvironment.EnvironmentName);
            })
            .ConfigureServices((hostContext, services) =>
            {
                // Loads of configuration (DI, Logging, Messaging, etc) removed for brevity
                // ...
            })
            .UseWindowsService();
}

В этом случае служба прослушивает сообщения (используя Masstransit), поэтому настройка HostedService отсутствует, но в других случаях это может произойти.

...