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
отсутствует, но в других случаях это может произойти.