<PackageReference Include="NUnit" Version="4.2.2" />

WorkItemBuilder

public static class WorkItemBuilder
WorkItemBuilder class knows how to build a tree of work items from a tree of tests
using NUnit.Framework.Interfaces; using NUnit.Framework.Internal.Abstractions; using NUnit.Framework.Internal.Extensions; using System.Collections.Generic; using System.Runtime.CompilerServices; using System.Threading; namespace NUnit.Framework.Internal.Execution { public static class WorkItemBuilder { private class WorkItemOrderComparer : IComparer<WorkItem> { [System.Runtime.CompilerServices.NullableContext(2)] public int Compare(WorkItem x, WorkItem y) { if (x == null && y == null) return 0; if (x == null) return -1; if (y == null) return 1; int num = x.Test.Properties.TryGet("Order", 2147483647); int value = y.Test.Properties.TryGet("Order", 2147483647); return num.CompareTo(value); } } [System.Runtime.CompilerServices.NullableContext(1)] [return: System.Runtime.CompilerServices.Nullable(2)] public static WorkItem CreateWorkItem(ITest test, ITestFilter filter, bool recursive = false) { return CreateWorkItem(test, filter, new DebuggerProxy(), recursive, true); } [System.Runtime.CompilerServices.NullableContext(1)] [return: System.Runtime.CompilerServices.Nullable(2)] internal static WorkItem CreateWorkItem(ITest test, ITestFilter filter, IDebugger debugger, bool recursive = false, bool root = true) { TestSuite testSuite = test as TestSuite; if (testSuite == null) { if (root || filter.Pass(test)) return new SimpleWorkItem((TestMethod)test, filter, debugger); return null; } CompositeWorkItem compositeWorkItem = root ? new CompositeWorkItem(testSuite, filter) : null; if (recursive) { int num = 0; foreach (ITest test2 in testSuite.Tests) { WorkItem workItem = CreateWorkItem(test2, filter, debugger, recursive, false); if (workItem != null) { if (compositeWorkItem == null) compositeWorkItem = new CompositeWorkItem(testSuite, filter); if (workItem.TargetApartment == ApartmentState.Unknown && compositeWorkItem.TargetApartment != ApartmentState.Unknown) workItem.TargetApartment = compositeWorkItem.TargetApartment; if (test2.Properties.ContainsKey("Order")) { compositeWorkItem.Children.Insert(0, workItem); num++; } else compositeWorkItem.Children.Add(workItem); } } if (num > 0) compositeWorkItem.Children.Sort(0, num, new WorkItemOrderComparer()); } return compositeWorkItem; } } }