Testowanie jednostkowe
W większości przypadków nie trzeba konfigurować dodatkowych składników do uruchamiania testów. Jeśli jednak testowany składnik używa HttpRuntimeelementu , może być konieczne uruchomienie SystemWebAdapters
usługi, jak pokazano w poniższym przykładzie:
namespace TestProject1;
/// <summary>
/// This demonstrates an xUnit feature that ensures all tests
/// in classes marked with this collection are run sequentially.
/// </summary>
[CollectionDefinition(nameof(SystemWebAdaptersHostedTests),
DisableParallelization = true)]
public class SystemWebAdaptersHostedTests
{
}
[Collection(nameof(SystemWebAdaptersHostedTests))]
public class RuntimeTests
{
/// <summary>
/// This method starts up a host in the background that
/// makes it possible to initialize <see cref="HttpRuntime"/>
/// and <see cref="HostingEnvironment"/> with values needed
/// for testing with the <paramref name="configure"/> option.
/// </summary>
/// <param name="configure">
/// Configuration for the hosting and runtime options.
/// </param>
public static async Task<IDisposable> EnableRuntimeAsync(
Action<SystemWebAdaptersOptions>? configure = null,
CancellationToken token = default)
=> await new HostBuilder()
.ConfigureWebHost(webBuilder =>
{
webBuilder
.UseTestServer()
.ConfigureServices(services =>
{
services.AddSystemWebAdapters();
if (configure is not null)
{
services.AddOptions
<SystemWebAdaptersOptions>()
.Configure(configure);
}
})
.Configure(app =>
{
// No need to configure pipeline for tests
});
})
.StartAsync(token);
[Fact]
public async Task RuntimeEnabled()
{
using (await EnableRuntimeAsync(options =>
options.AppDomainAppPath = "path"))
{
Assert.True(HostingEnvironment.IsHosted);
Assert.Equal("path", HttpRuntime.AppDomainAppPath);
}
Assert.False(HostingEnvironment.IsHosted);
}
}
Testy muszą być wykonywane w sekwencji, a nie równolegle. W poprzednim przykładzie pokazano, jak to osiągnąć, ustawiając opcję XUnit DisableParallelization
na true
wartość . To ustawienie wyłącza wykonywanie równoległe dla określonej kolekcji testów, zapewniając, że testy w tej kolekcji są uruchamiane po drugiej, bez współbieżności.
Współpracuj z nami w serwisie GitHub
Źródło tej zawartości można znaleźć w witrynie GitHub, gdzie można również tworzyć i przeglądać problemy i żądania ściągnięcia. Więcej informacji znajdziesz w naszym przewodniku dla współtwórców.