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

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 System.Collections.Generic; using System.Threading; namespace NUnit.Framework.Internal.Execution { public static class WorkItemBuilder { private class WorkItemOrderComparer : IComparer<WorkItem> { public int Compare(WorkItem x, WorkItem y) { int num = 2147483647; int value = 2147483647; if (x.Test.Properties.ContainsKey("Order")) num = (int)x.Test.Properties["Order"][0]; if (y.Test.Properties.ContainsKey("Order")) value = (int)y.Test.Properties["Order"][0]; return num.CompareTo(value); } } public static WorkItem CreateWorkItem(ITest test, ITestFilter filter, bool recursive = false) { TestSuite testSuite = test as TestSuite; if (testSuite == null) return new SimpleWorkItem((TestMethod)test, filter); CompositeWorkItem compositeWorkItem = new CompositeWorkItem(testSuite, filter); if (recursive) { int num = 0; foreach (ITest test2 in testSuite.Tests) { if (filter.Pass(test2)) { WorkItem workItem = CreateWorkItem(test2, filter, recursive); 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; } } }