Skip to content

Commit

Permalink
Update test base classes and upgrade package versions
Browse files Browse the repository at this point in the history
The key changes in this commit are focused on improving the test base classes and upgrading software package versions. The update to the loggers introduced in the WebApplicationTestBase and HostApplicationTestBase classes enhances the allowed variability for loggers and providers. The upgrades include the newest versions of Microsoft.NET.Test.Sdk, xunit, coverlet.collector and Testcontainers, essentially ensuring compatibility with the latest libraries. Some outdated and unused test components were also removed for better maintainability.
  • Loading branch information
frankhaugen committed Jun 24, 2024
1 parent 947f74c commit 579a417
Show file tree
Hide file tree
Showing 15 changed files with 84 additions and 191 deletions.
2 changes: 2 additions & 0 deletions .idea/.idea.Frank.Testing/.idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.6" />
</ItemGroup>
</Project>
2 changes: 1 addition & 1 deletion Frank.Testing.Logging/Frank.Testing.Logging.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<PackageReference Include="Frank.Reflection" Version="1.3.0" />
<PackageReference Include="JetBrains.Annotations" Version="2023.3.0" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.0" />
<PackageReference Include="xunit.extensibility.core" Version="2.7.0" />
<PackageReference Include="xunit.extensibility.core" Version="2.8.1" />
</ItemGroup>

<ItemGroup>
Expand Down
38 changes: 38 additions & 0 deletions Frank.Testing.Logging/TestOutputHelperExtensions.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;

using Xunit.Abstractions;

Expand All @@ -15,4 +16,41 @@ public static class TestOutputHelperExtensions
/// <returns>An instance of <see cref="ILogger{T}"/> that can be used for logging tests.</returns>
public static ILogger<T> CreateTestLogger<T>(this ITestOutputHelper outputHelper, LogLevel logLevel = LogLevel.Debug)
=> new SimpleTestLogger<T>(outputHelper, logLevel);

/// <summary>
/// Creates a test logger instance with the specified log category name.
/// </summary>
/// <typeparam name="T">The type of the class to which the created logger will be associated.</typeparam>
/// <param name="outputHelper">The ITestOutputHelper instance used for logging.</param>
/// <param name="logLevel">The log level to be used for the logger (default: LogLevel.Debug).</param>
/// <returns>An instance of <see cref="ILogger{T}"/> that can be used for logging tests.</returns>
public static ILogger CreateTestLogger(this ITestOutputHelper outputHelper, LogLevel logLevel = LogLevel.Debug, string categoryName = "Test")
=> new SimpleTestLogger(outputHelper, logLevel, categoryName);

/// <summary>
/// Creates a test logger provider instance with the specified log level.
/// </summary>
/// <param name="outputHelper">The ITestOutputHelper instance used for logging.</param>
/// <param name="logLevel">The log level to be used for the logger provider (default: LogLevel.Debug).</param>
/// <returns>An instance of ILoggerProvider that can be used for logging tests.</returns>
public static ILoggerProvider CreateTestLoggerProvider(this ITestOutputHelper outputHelper, LogLevel logLevel = LogLevel.Debug)
=> new SimpleTestLoggerProvider(outputHelper, Options.Create(new LoggerFilterOptions()
{
MinLevel = logLevel
}));

/// <summary>
/// Creates a test logger factory instance with the specified log level.
/// </summary>
/// <param name="outputHelper">The ITestOutputHelper instance used for logging.</param>
/// <param name="logLevel">The log level to be used for the logger factory (default: LogLevel.Debug).</param>
/// <returns>An instance of ILoggerFactory that can be used for creating test loggers.</returns>
public static ILoggerFactory CreateTestLoggerFactory(this ITestOutputHelper outputHelper, LogLevel logLevel = LogLevel.Debug)
{
var loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddProvider(outputHelper.CreateTestLoggerProvider(logLevel));
});
return loggerFactory;
}
}
8 changes: 1 addition & 7 deletions Frank.Testing.TestBases/Frank.Testing.TestBases.csproj
Original file line number Diff line number Diff line change
@@ -1,17 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="BenchmarkDotNet" Version="0.13.12" />
<PackageReference Include="BenchmarkDotNet.Diagnostics.dotTrace" Version="0.13.12" />
<PackageReference Include="BenchmarkDotNetVisualizer" Version="1.0.5" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
<PackageReference Include="xunit.extensibility.core" Version="2.7.0" />
<PackageReference Include="xunit.extensibility.core" Version="2.8.1" />
</ItemGroup>

<ItemGroup>
Expand Down
36 changes: 0 additions & 36 deletions Frank.Testing.TestBases/HostApplicationBenchmarkBase.cs

This file was deleted.

17 changes: 13 additions & 4 deletions Frank.Testing.TestBases/HostApplicationTestBase.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
using Microsoft.Extensions.DependencyInjection;
using Frank.Testing.Logging;

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;

using Xunit;
using Xunit.Abstractions;

namespace Frank.Testing.TestBases;

Expand All @@ -20,12 +23,18 @@ public abstract class HostApplicationTestBase : IAsyncLifetime
/// <summary>
/// Creates a new instance of <see cref="HostApplicationTestBase"/> with the specified logger provider and log level
/// </summary>
/// <param name="loggerProvider"></param>
/// <param name="outputHelper"></param>
/// <param name="logLevel"></param>
protected HostApplicationTestBase(ILoggerProvider loggerProvider, LogLevel logLevel = LogLevel.Error)
/// <param name="loggerProvider"></param>
protected HostApplicationTestBase(ITestOutputHelper outputHelper, LogLevel logLevel = LogLevel.Error, ILoggerProvider? loggerProvider = null)
{
_hostApplicationBuilder = Host.CreateApplicationBuilder();
_hostApplicationBuilder.Logging.AddDebug().AddProvider(loggerProvider).SetMinimumLevel(logLevel);
_hostApplicationBuilder.Logging.ClearProviders().AddDebug().AddProvider(outputHelper.CreateTestLoggerProvider()).SetMinimumLevel(logLevel);

if (loggerProvider != null)
{
_hostApplicationBuilder.Logging.AddProvider(loggerProvider);
}
}

/// <summary>
Expand Down
36 changes: 0 additions & 36 deletions Frank.Testing.TestBases/StringDelegateBenchmarkLogger.cs

This file was deleted.

15 changes: 12 additions & 3 deletions Frank.Testing.TestBases/WebApplicationTestBase.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
using System.Net;

using Frank.Testing.Logging;

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
Expand All @@ -9,6 +11,7 @@
using Microsoft.Extensions.Logging;

using Xunit;
using Xunit.Abstractions;

namespace Frank.Testing.TestBases;

Expand All @@ -26,12 +29,18 @@ public abstract class WebApplicationTestBase : IAsyncLifetime
/// <summary>
/// Creates a new instance of <see cref="WebApplicationTestBase"/> with the specified logger provider and log level
/// </summary>
/// <param name="loggerProvider"></param>
/// <param name="outputHelper"></param>
/// <param name="logLevel"></param>
protected WebApplicationTestBase(ILoggerProvider loggerProvider, LogLevel logLevel = LogLevel.Error)
/// <param name="loggerProvider"></param>
protected WebApplicationTestBase(ITestOutputHelper outputHelper, LogLevel logLevel = LogLevel.Error, ILoggerProvider? loggerProvider = null)
{
_hostApplicationBuilder = WebApplication.CreateBuilder();
_hostApplicationBuilder.Logging.AddDebug().AddProvider(loggerProvider).SetMinimumLevel(logLevel);
_hostApplicationBuilder.Logging.ClearProviders().AddDebug().AddProvider(outputHelper.CreateTestLoggerProvider()).SetMinimumLevel(logLevel);

if (loggerProvider != null)
{
_hostApplicationBuilder.Logging.AddProvider(loggerProvider);
}
}

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Testcontainers" Version="3.7.0" />
<PackageReference Include="Testcontainers" Version="3.9.0" />
</ItemGroup>

</Project>
8 changes: 4 additions & 4 deletions Frank.Testing.Tests/Frank.Testing.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,18 @@
<PackageReference Include="FluentAssertions" Version="6.12.0" />
<PackageReference Include="JetBrains.Annotations" Version="2023.3.0" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
<PackageReference Include="NSubstitute" Version="5.1.0" />
<PackageReference Include="NSubstitute.Analyzers.CSharp" Version="1.0.17">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="xunit" Version="2.7.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.7">
<PackageReference Include="xunit" Version="2.8.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.1">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="coverlet.collector" Version="6.0.1">
<PackageReference Include="coverlet.collector" Version="6.0.2">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
Expand Down
88 changes: 0 additions & 88 deletions Frank.Testing.Tests/TestBases/HostApplicationBenchmarkBase.cs

This file was deleted.

4 changes: 2 additions & 2 deletions Frank.Testing.Tests/TestBases/HostApplicationTestBaseTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

namespace Frank.Testing.Tests.TestBases;

public class HostApplicationTestBaseTests(ITestOutputHelper outputHelper) : HostApplicationTestBase(new SimpleTestLoggerProvider(outputHelper, Options.Create(new LoggerFilterOptions { MinLevel = LogLevel.Debug })))
public class HostApplicationTestBaseTests(ITestOutputHelper outputHelper) : HostApplicationTestBase(outputHelper, loggerProvider: new SimpleTestLoggerProvider(outputHelper, Options.Create(new LoggerFilterOptions())))
{
protected override Task SetupAsync(HostApplicationBuilder builder)
{
Expand All @@ -25,7 +25,7 @@ protected override Task SetupAsync(HostApplicationBuilder builder)
[Fact]
public async Task Test()
{
await Task.Delay(2500);
await Task.Delay(1500);
}

[Fact]
Expand Down
Loading

0 comments on commit 579a417

Please sign in to comment.