diff --git a/src/Verify.NUnit/Verifier.cs b/src/Verify.NUnit/Verifier.cs index 4d7edb2532..042ac4f261 100644 --- a/src/Verify.NUnit/Verifier.cs +++ b/src/Verify.NUnit/Verifier.cs @@ -2,8 +2,15 @@ public static partial class Verifier { +#if NET8_0_OR_GREATER + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "_test")] + static extern ref Test GetTest(TestContext.TestAdapter adapter); +#else static FieldInfo field; + static Test GetTest(TestContext.TestAdapter adapter) => + (Test) field.GetValue(adapter)!; + static Verifier() { var temp = typeof(TestContext.TestAdapter) @@ -11,6 +18,7 @@ static Verifier() field = temp ?? throw new("Could not find field `_test` on TestContext.TestAdapter."); } +#endif static InnerVerifier BuildVerifier(string sourceFile, VerifySettings settings, bool useUniqueDirectory) { @@ -19,9 +27,10 @@ static InnerVerifier BuildVerifier(string sourceFile, VerifySettings settings, b { settings.UseUniqueDirectory(); } + var context = TestContext.CurrentContext; var adapter = context.Test; - var test = (Test) field.GetValue(adapter)!; + var test = GetTest(adapter); var typeInfo = test.TypeInfo; if (typeInfo is null || test.Method is null) {