protected override IEnumerable PerformWork() { if (m_Command is SkipCommand) { m_Command.Execute(Context); Result = Context.CurrentResult; WorkItemComplete(); yield break; } if (m_Command is ApplyChangesToContextCommand) { var applyChangesToContextCommand = (ApplyChangesToContextCommand)m_Command; applyChangesToContextCommand.ApplyChanges(Context); m_Command = applyChangesToContextCommand.GetInnerCommand(); } var enumerableTestMethodCommand = (IEnumerableTestMethodCommand)m_Command; try { var executeEnumerable = enumerableTestMethodCommand.ExecuteEnumerable(Context).GetEnumerator(); var coroutineRunner = new CoroutineRunner(monoBehaviourCoroutineRunner, Context); yield return(coroutineRunner.HandleEnumerableTest(executeEnumerable)); if (coroutineRunner.HasFailedWithTimeout()) { Context.CurrentResult.SetResult(ResultState.Failure, new UnityTestTimeoutException(Context.TestCaseTimeout).Message); } while (executeEnumerable.MoveNext()) { } Result = Context.CurrentResult; } finally { WorkItemComplete(); } }