Workleap.Extensions.Xunit
1.1.32-preview.17
Prefix Reserved
See the version list below for details.
dotnet add package Workleap.Extensions.Xunit --version 1.1.32-preview.17
NuGet\Install-Package Workleap.Extensions.Xunit -Version 1.1.32-preview.17
<PackageReference Include="Workleap.Extensions.Xunit" Version="1.1.32-preview.17" />
<PackageVersion Include="Workleap.Extensions.Xunit" Version="1.1.32-preview.17" />
<PackageReference Include="Workleap.Extensions.Xunit" />
paket add Workleap.Extensions.Xunit --version 1.1.32-preview.17
#r "nuget: Workleap.Extensions.Xunit, 1.1.32-preview.17"
#:package Workleap.Extensions.Xunit@1.1.32-preview.17
#addin nuget:?package=Workleap.Extensions.Xunit&version=1.1.32-preview.17&prerelease
#tool nuget:?package=Workleap.Extensions.Xunit&version=1.1.32-preview.17&prerelease
Workleap.Extensions.Xunit
An opinionated library that provides base unit test and fixture classes based on the Microsoft.Extensions.* packages used by modern .NET applications.
Getting started
There are base classes for unit and integration tests. Each test method has its own service collection configured through a class fixture.
Unit tests
Create a test class that extends BaseUnitTest<> and accepts a class fixture that extends BaseUnitFixture.
In the fixture class, you can:
- Override
ConfigureServices(services)to add, remove or update dependencies for each test method. - Override
ConfigureConfiguration(builder)to makes changes to the generated sharedIConfiguration. - Access the generated
IConfigurationthroughthis.Configuration.
In the test class, you can:
- Access the fixture through
this.Fixture. - Access the .NET logger through
this.Logger- it is connected to the Xunit'sITestOutputHelper. - Access the
IServiceProviderwhich has been configured by the fixture throughthis.Services.
By default, unit tests come with an xunit-connected ILogger and an empty IConfiguration.
Integration tests
Create a test class that extends BaseIntegrationTest<> and accepts a class fixture that extends BaseIntegrationFixture.
They both inherit from their respective BaseUnit* class.
BaseIntegrationFixtureadds a defaultIHostEnvironmentwhere its environment name is:Localby default,Teston CI environments,- overrideable by defining a
DOTNET_ENVIRONMENTenvironment variable, such as in .NET modern applications.
BaseIntegrationFixtureaddsappsettings.jsonandappsettings.{environment}.jsonoptional configuration providers and also an environment variable configuration provider.
Example
public class MyUnitTests : BaseUnitTest<MyUnitFixture>
{
public MyUnitTests(MyUnitFixture fixture, ITestOutputHelper testOutputHelper)
: base(fixture, testOutputHelper)
{
}
[Fact]
public void Some_Test_Works()
{
var myClass = this.Services.GetRequiredService<MyClass>();
myClass.DoWork();
}
}
public class MyUnitFixture : BaseUnitFixture
{
protected override IConfigurationBuilder ConfigureConfiguration(IConfigurationBuilder builder)
{
// Executed once per fixture instance
return base.ConfigureConfiguration(builder).AddInMemoryCollection(new Dictionary<string, string>
{
["My:Config:Variable"] = "foo",
});
// In an integration fixture, you could add concrete configuration providers, such as:
// builder.AddAzureKeyVault(...);
}
public override IServiceCollection ConfigureServices(IServiceCollection services)
{
// Executed for each test method
return base.ConfigureServices(services)
.AddTransient<MyClass>()
.AddTransient<IDependency>(new MyFakeDependency());
}
}
Contribute
Please see CONTRIBUTING
License
Copyright © 2022, Workleap. This code is licensed under the Apache License, Version 2.0. You may obtain a copy of this license at https://github.com/workleap/gsoft-license/blob/master/LICENSE.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Framework | net462 is compatible. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
-
.NETFramework 4.6.2
- Microsoft.Extensions.Configuration (>= 8.0.0)
- Microsoft.Extensions.Configuration.EnvironmentVariables (>= 8.0.0)
- Microsoft.Extensions.Configuration.Json (>= 8.0.1)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
- Microsoft.Extensions.Hosting.Abstractions (>= 8.0.1)
- Microsoft.Extensions.Logging (>= 8.0.1)
- Microsoft.Extensions.Logging.Configuration (>= 8.0.1)
- xunit.core (>= 2.9.3)
-
net8.0
- Microsoft.Extensions.Configuration (>= 8.0.0)
- Microsoft.Extensions.Configuration.EnvironmentVariables (>= 8.0.0)
- Microsoft.Extensions.Configuration.Json (>= 8.0.1)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
- Microsoft.Extensions.Hosting.Abstractions (>= 8.0.1)
- Microsoft.Extensions.Logging (>= 8.0.1)
- Microsoft.Extensions.Logging.Configuration (>= 8.0.1)
- xunit.core (>= 2.9.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.1.32-preview.23 | 0 | 3/14/2026 |
| 1.1.32-preview.22 | 29 | 3/12/2026 |
| 1.1.32-preview.21 | 29 | 3/11/2026 |
| 1.1.32-preview.20 | 40 | 3/9/2026 |
| 1.1.32-preview.19 | 37 | 3/4/2026 |
| 1.1.32-preview.18 | 39 | 3/1/2026 |
| 1.1.32-preview.17 | 44 | 2/23/2026 |
| 1.1.32-preview.16 | 45 | 2/19/2026 |
| 1.1.32-preview.15 | 49 | 2/16/2026 |
| 1.1.32-preview.14 | 52 | 2/12/2026 |
| 1.1.32-preview.13 | 52 | 2/9/2026 |
| 1.1.32-preview.12 | 54 | 2/2/2026 |
| 1.1.32-preview.11 | 52 | 1/26/2026 |
| 1.1.32-preview.10 | 59 | 1/18/2026 |
| 1.1.32-preview.9 | 55 | 1/16/2026 |
| 1.1.32-preview.8 | 59 | 1/12/2026 |
| 1.1.32-preview.7 | 55 | 1/5/2026 |
| 1.1.32-preview.6 | 60 | 12/31/2025 |
| 1.1.32-preview.5 | 59 | 12/31/2025 |
| 1.1.31 | 11,087 | 11/23/2025 |