using Xunit.Abstractions; using Xunit.Sdk; namespace Cleanuparr.Api.Tests; public sealed class PriorityOrderer : ITestCaseOrderer { public IEnumerable OrderTestCases(IEnumerable testCases) where TTestCase : ITestCase { var sortedMethods = new SortedDictionary>(); foreach (var testCase in testCases) { var priority = testCase.TestMethod.Method .GetCustomAttributes(typeof(TestPriorityAttribute).AssemblyQualifiedName) .FirstOrDefault() ?.GetNamedArgument("Priority") ?? 0; if (!sortedMethods.TryGetValue(priority, out var list)) { list = []; sortedMethods[priority] = list; } list.Add(testCase); } foreach (var list in sortedMethods.Values) { foreach (var testCase in list) { yield return testCase; } } } }