diff --git a/TUnit.Engine/Scheduling/TestScheduler.cs b/TUnit.Engine/Scheduling/TestScheduler.cs index 3653a7971c..fbc369ec51 100644 --- a/TUnit.Engine/Scheduling/TestScheduler.cs +++ b/TUnit.Engine/Scheduling/TestScheduler.cs @@ -174,10 +174,9 @@ private async Task ExecuteGroupedTestsAsync( // 1. NotInParallel tests (global) - must run one at a time if (groupedTests.NotInParallel.Length > 0) { - var globalNotInParallelTask = ExecuteNotInParallelTestsAsync( + await ExecuteNotInParallelTestsAsync( groupedTests.NotInParallel, cancellationToken); - allTestTasks.Add(globalNotInParallelTask); } // 2. Keyed NotInParallel tests @@ -319,7 +318,7 @@ private async Task ExecuteParallelGroupAsync( // Use worker pool pattern for parallel groups var testQueue = new System.Collections.Concurrent.ConcurrentQueue(tests); var workers = new Task[maxParallelism.Value]; - + for (int i = 0; i < maxParallelism.Value; i++) { workers[i] = Task.Run(async () => @@ -328,12 +327,12 @@ private async Task ExecuteParallelGroupAsync( { if (cancellationToken.IsCancellationRequested) break; - + await test.ExecutionTask.ConfigureAwait(false); } }, cancellationToken); } - + await Task.WhenAll(workers).ConfigureAwait(false); } else @@ -355,7 +354,7 @@ private async Task ExecuteParallelTestsAsync( // Create a fixed number of worker tasks that process tests from a queue var testQueue = new System.Collections.Concurrent.ConcurrentQueue(tests); var workers = new Task[maxParallelism.Value]; - + // Create worker tasks for (int i = 0; i < maxParallelism.Value; i++) { @@ -365,12 +364,12 @@ private async Task ExecuteParallelTestsAsync( { if (cancellationToken.IsCancellationRequested) break; - + await test.ExecutionTask.ConfigureAwait(false); } }, cancellationToken); } - + await Task.WhenAll(workers).ConfigureAwait(false); } else