diff --git a/tests/Directory.Packages.props b/tests/Directory.Packages.props
index cc1306b..53ad6a3 100644
--- a/tests/Directory.Packages.props
+++ b/tests/Directory.Packages.props
@@ -9,6 +9,7 @@
+
\ No newline at end of file
diff --git a/tests/HydraScript.IntegrationTests/ErrorPrograms/VariableInitializationTests.cs b/tests/HydraScript.IntegrationTests/ErrorPrograms/VariableInitializationTests.cs
index f1bc804..848d944 100644
--- a/tests/HydraScript.IntegrationTests/ErrorPrograms/VariableInitializationTests.cs
+++ b/tests/HydraScript.IntegrationTests/ErrorPrograms/VariableInitializationTests.cs
@@ -1,19 +1,16 @@
using System.CommandLine.Parsing;
using FluentAssertions;
-using Xunit.Abstractions;
namespace HydraScript.IntegrationTests.ErrorPrograms;
-public class VariableInitializationTests(
- TestHostFixture fixture,
- ITestOutputHelper testOutputHelper) : IClassFixture
+public class VariableInitializationTests(TestHostFixture fixture) : IClassFixture
{
[Theory, MemberData(nameof(VariableInitializationScripts))]
public void VariableWithoutTypeDeclared_AccessedBeforeInitialization_ExitCodeHydraScriptError(string script)
{
var runner = fixture.GetRunner(
- testOutputHelper,
- configureTestServices: services => services.SetupInMemoryScript(script));
+ configureTestServices: services =>
+ services.SetupInMemoryScript(script));
var code = runner.Invoke(fixture.InMemoryScript);
code.Should().Be(ExitCodes.HydraScriptError);
fixture.LogMessages.Should()
diff --git a/tests/HydraScript.IntegrationTests/HydraScript.IntegrationTests.csproj b/tests/HydraScript.IntegrationTests/HydraScript.IntegrationTests.csproj
index 8c5cc03..28252b0 100644
--- a/tests/HydraScript.IntegrationTests/HydraScript.IntegrationTests.csproj
+++ b/tests/HydraScript.IntegrationTests/HydraScript.IntegrationTests.csproj
@@ -1,5 +1,9 @@
+
+ CA1816
+
+
@@ -7,6 +11,7 @@
+
runtime; build; native; contentfiles; analyzers; buildtransitive
all
diff --git a/tests/HydraScript.IntegrationTests/Startup.cs b/tests/HydraScript.IntegrationTests/Startup.cs
new file mode 100644
index 0000000..b2ae4aa
--- /dev/null
+++ b/tests/HydraScript.IntegrationTests/Startup.cs
@@ -0,0 +1,7 @@
+namespace HydraScript.IntegrationTests;
+
+// ReSharper disable once UnusedType.Global
+///
+/// https://github.com/pengweiqhca/Xunit.DependencyInjection#4-default-startup
+///
+public class Startup;
\ No newline at end of file
diff --git a/tests/HydraScript.IntegrationTests/SuccessfulProgramsTests.cs b/tests/HydraScript.IntegrationTests/SuccessfulProgramsTests.cs
index d0d80c7..b91af67 100644
--- a/tests/HydraScript.IntegrationTests/SuccessfulProgramsTests.cs
+++ b/tests/HydraScript.IntegrationTests/SuccessfulProgramsTests.cs
@@ -1,17 +1,14 @@
using System.CommandLine.Parsing;
using FluentAssertions;
-using Xunit.Abstractions;
namespace HydraScript.IntegrationTests;
-public class SuccessfulProgramsTests(
- TestHostFixture fixture,
- ITestOutputHelper testOutputHelper) : IClassFixture
+public class SuccessfulProgramsTests(TestHostFixture fixture) : IClassFixture
{
[Theory, MemberData(nameof(SuccessfulProgramsNames))]
public void Invoke_NoError_ReturnCodeIsZero(string fileName)
{
- var runner = fixture.GetRunner(testOutputHelper);
+ var runner = fixture.GetRunner();
var code = runner.Invoke([$"Samples/{fileName}"]);
code.Should().Be(ExitCodes.Success);
}
diff --git a/tests/HydraScript.IntegrationTests/TestHostFixture.cs b/tests/HydraScript.IntegrationTests/TestHostFixture.cs
index 92e8855..5255bd9 100644
--- a/tests/HydraScript.IntegrationTests/TestHostFixture.cs
+++ b/tests/HydraScript.IntegrationTests/TestHostFixture.cs
@@ -1,6 +1,7 @@
using System.CommandLine.Hosting;
using System.CommandLine.Parsing;
using HydraScript.Infrastructure;
+using MartinCostello.Logging.XUnit;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
@@ -8,19 +9,25 @@
namespace HydraScript.IntegrationTests;
-public class TestHostFixture : IDisposable
+public class TestHostFixture(
+ Xunit.DependencyInjection.ITestOutputHelperAccessor accessor) :
+ IDisposable, ITestOutputHelperAccessor
{
private readonly List _logMessages = [];
public readonly string[] InMemoryScript = ["file.js"];
public IReadOnlyCollection LogMessages => _logMessages;
- public Parser GetRunner(
- ITestOutputHelper testOutputHelper,
- Action? configureTestServices = null) =>
+ public ITestOutputHelper? OutputHelper
+ {
+ get => accessor.Output;
+ set { }
+ }
+
+ public Parser GetRunner(Action? configureTestServices = null) =>
Program.GetRunner(configureHost: builder => builder
.ConfigureLogging(x => x.ClearProviders()
- .AddXUnit(testOutputHelper)
+ .AddXUnit(this)
.AddFakeLogging(options =>
{
options.OutputSink = logMessage => _logMessages.Add(logMessage);