暫無描述
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

EditModeRunTask.cs 2.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using System;
  2. using System.Collections;
  3. using UnityEngine;
  4. namespace UnityEditor.TestTools.TestRunner.TestRun.Tasks
  5. {
  6. internal class EditModeRunTask : TestTaskBase
  7. {
  8. public EditModeRunTask()
  9. {
  10. SupportsResumingEnumerator = true;
  11. RerunAfterResume = true;
  12. }
  13. public override IEnumerator Execute(TestJobData testJobData)
  14. {
  15. if (testJobData.taskInfoStack.Peek().taskMode == TaskMode.Canceled)
  16. {
  17. var runner = testJobData.editModeRunner;
  18. if (runner != null)
  19. {
  20. runner.OnRunCancel();
  21. }
  22. yield break;
  23. }
  24. else if (testJobData.taskInfoStack.Peek().taskMode == TaskMode.Resume)
  25. {
  26. var runner = testJobData.editModeRunner;
  27. if (runner == null)
  28. {
  29. yield break;
  30. }
  31. runner.Resume(testJobData.executionSettings.BuildNUnitFilter(), testJobData.testTree, testJobData.TestStartedEvent, testJobData.TestFinishedEvent, testJobData.Context);
  32. yield break;
  33. }
  34. yield return null; // Allow for setting the test job data after a resume.
  35. var editModeRunner = ScriptableObject.CreateInstance<EditModeRunner>();
  36. testJobData.editModeRunner = editModeRunner;
  37. editModeRunner.UnityTestAssemblyRunnerFactory = new UnityTestAssemblyRunnerFactory();
  38. editModeRunner.Init(testJobData.executionSettings.BuildNUnitFilter(), testJobData.executionSettings.runSynchronously, testJobData.testTree, testJobData.TestStartedEvent,
  39. testJobData.TestFinishedEvent, testJobData.Context, testJobData.executionSettings.orderedTestNames, testJobData.executionSettings.randomOrderSeed, testJobData.executionSettings.featureFlags.disableNestedEnumeratorBugfix);
  40. while (testJobData.editModeRunner != null && !testJobData.editModeRunner.RunFinished)
  41. {
  42. testJobData.editModeRunner.TestConsumer(testJobData.testRunnerStateSerializer);
  43. yield return null;
  44. }
  45. testJobData.TestResults = testJobData.editModeRunner.m_Runner.Result;
  46. }
  47. }
  48. }