| File: XUnit\ForceGCAttribute.cs | Web Access |
| Project: src\winforms\src\Common\tests\TestUtilities\System.Private.Windows.Core.TestUtilities.csproj (System.Private.Windows.Core.TestUtilities) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Reflection; using Xunit.v3; namespace Xunit; /// <summary> /// Apply this attribute to a test class or method to force a full GC collection /// after each test. This helps prevent <see cref="OutOfMemoryException"/> in x86 /// test runs where memory-intensive operations (e.g. Roslyn compilations) accumulate. /// </summary> [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] public sealed class ForceGCAttribute : BeforeAfterTestAttribute { public override void After(MethodInfo methodUnderTest, IXunitTest test) { GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced, blocking: true); GC.WaitForPendingFinalizers(); GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced, blocking: true); } }