Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ public T GetScopedService<T>(ITestOutputHelper testOutputHelper);
public T GetService<T>(ITestOutputHelper testOutputHelper);
```

### Adding custom logging provider
Test developers can add their own desired logger provider by overriding ```AddLoggingProvider(...)``` virtual method defined in ```TestBedFixture``` class.

### Preparing Xunit test classes
Your Xunit test class must be derived from ```Xunit.Microsoft.DependencyInjection.Abstracts.TestBed<T>``` class where ```T``` should be your fixture class derived from ```TestBedFixture```.

Expand Down
8 changes: 4 additions & 4 deletions src/Abstracts/TestBedFixture.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public IServiceProvider GetServiceProvider(ITestOutputHelper testOutputHelper)
return _serviceProvider;
}

_services.AddLogging(loggingBuilder => loggingBuilder.AddProvider(new OutputLoggerProvider(testOutputHelper)));
_services.AddLogging(loggingBuilder => AddLoggingProvider(loggingBuilder, new OutputLoggerProvider(testOutputHelper)));
return _serviceProvider = _services.BuildServiceProvider();
}

Expand All @@ -41,12 +41,12 @@ public T GetScopedService<T>(ITestOutputHelper testOutputHelper)
public T GetService<T>(ITestOutputHelper testOutputHelper)
=> GetServiceProvider(testOutputHelper).GetService<T>();

public void AddOutputHelperToLoggerProvider(ITestOutputHelper testOutputHelper)
=> _services.AddScoped<ILoggerProvider>(_ => new OutputLoggerProvider(testOutputHelper));

protected abstract string GetConfigurationFile();
protected abstract void AddServices(IServiceCollection services, IConfiguration configuration);

protected virtual ILoggingBuilder AddLoggingProvider(ILoggingBuilder loggingBuilder, ILoggerProvider loggerProvider)
=> loggingBuilder.AddProvider(loggerProvider);

private IConfigurationRoot GetConfigurationRoot()
{
var configurationFile = GetConfigurationFile();
Expand Down