Files
UnrealEngine/Engine/Source/Programs/Horde/HordeServer.Tests.Shared/ServiceTest.cs
2025-05-18 13:04:45 +08:00

49 lines
995 B
C#

// Copyright Epic Games, Inc. All Rights Reserved.
using Microsoft.Extensions.DependencyInjection;
namespace HordeServer.Tests
{
/// <summary>
/// Implements a test framework which manages a collection of services
/// </summary>
public class ServiceTest : IAsyncDisposable
{
private ServiceProvider? _serviceProvider = null;
public IServiceProvider ServiceProvider
{
get
{
if (_serviceProvider == null)
{
IServiceCollection services = new ServiceCollection();
ConfigureServices(services);
_serviceProvider = services.BuildServiceProvider();
}
return _serviceProvider;
}
}
public virtual async ValueTask DisposeAsync()
{
GC.SuppressFinalize(this);
if (_serviceProvider != null)
{
await _serviceProvider.DisposeAsync();
_serviceProvider = null;
}
}
protected virtual void ConfigureSettings(ServerSettings settings)
{
}
protected virtual void ConfigureServices(IServiceCollection services)
{
}
}
}