No Description
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.

RiderTestRunner.cs 3.5KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. using JetBrains.Annotations;
  2. using UnityEngine;
  3. #if TEST_FRAMEWORK
  4. using UnityEditor;
  5. using UnityEditor.TestTools.TestRunner.Api;
  6. #else
  7. using System;
  8. #endif
  9. namespace Packages.Rider.Editor.UnitTesting
  10. {
  11. /// <summary>
  12. /// Is called by Rider Unity plugin via reflections
  13. /// </summary>
  14. [UsedImplicitly]
  15. public static class RiderTestRunner
  16. {
  17. #if TEST_FRAMEWORK
  18. private static readonly TestsCallback Callback = ScriptableObject.CreateInstance<TestsCallback>();
  19. #endif
  20. /// <summary>
  21. /// Is called by Rider Unity plugin via reflections
  22. /// </summary>
  23. /// <param name="sessionId"></param>
  24. /// <param name="testMode"></param>
  25. /// <param name="assemblyNames"></param>
  26. /// <param name="testNames"></param>
  27. /// <param name="categoryNames"></param>
  28. /// <param name="groupNames"></param>
  29. /// <param name="buildTarget"></param>
  30. /// <param name="callbacksHandlerCodeBase"></param>
  31. /// <param name="callbacksHandlerTypeName"></param>
  32. /// <param name="callbacksHandlerDependencies"></param>
  33. [UsedImplicitly]
  34. public static void RunTestsWithSyncCallbacks(string sessionId, int testMode, string[] assemblyNames,
  35. string[] testNames, string[] categoryNames, string[] groupNames, int? buildTarget,
  36. string callbacksHandlerCodeBase, string callbacksHandlerTypeName, string[] callbacksHandlerDependencies)
  37. {
  38. #if !TEST_FRAMEWORK
  39. Debug.LogError("Update Test Framework package to v.1.1.1+ to run tests from Rider.");
  40. throw new NotSupportedException("Incompatible `Test Framework` package in Unity. Update to v.1.1.1+");
  41. #else
  42. SyncTestRunEventsHandler.instance.InitRun(sessionId, callbacksHandlerCodeBase, callbacksHandlerTypeName, callbacksHandlerDependencies);
  43. RunTests(testMode, assemblyNames, testNames, categoryNames, groupNames, buildTarget);
  44. #endif
  45. }
  46. /// <summary>
  47. /// Is called by Rider Unity plugin via reflections
  48. /// </summary>
  49. /// <param name="testMode"></param>
  50. /// <param name="assemblyNames"></param>
  51. /// <param name="testNames"></param>
  52. /// <param name="categoryNames"></param>
  53. /// <param name="groupNames"></param>
  54. /// <param name="buildTarget"></param>
  55. [UsedImplicitly]
  56. public static void RunTests(int testMode, string[] assemblyNames, string[] testNames, string[] categoryNames, string[] groupNames, int? buildTarget)
  57. {
  58. #if !TEST_FRAMEWORK
  59. Debug.LogError("Update Test Framework package to v.1.1.1+ to run tests from Rider.");
  60. throw new NotSupportedException("Incompatible `Test Framework` package in Unity. Update to v.1.1.1+");
  61. #else
  62. CallbackData.instance.isRider = true;
  63. var api = ScriptableObject.CreateInstance<TestRunnerApi>();
  64. var settings = new ExecutionSettings();
  65. var filter = new Filter
  66. {
  67. assemblyNames = assemblyNames,
  68. testNames = testNames,
  69. categoryNames = categoryNames,
  70. groupNames = groupNames,
  71. targetPlatform = (BuildTarget?) buildTarget
  72. };
  73. if (testMode > 0) // for future use - test-framework would allow running both Edit and Play test at once
  74. filter.testMode = (TestMode) testMode;
  75. settings.filters = new []{
  76. filter
  77. };
  78. api.Execute(settings);
  79. api.UnregisterCallbacks(Callback); // avoid multiple registrations
  80. api.RegisterCallbacks(Callback); // This can be used to receive information about when the test suite and individual tests starts and stops. Provide this with a scriptable object implementing ICallbacks
  81. #endif
  82. }
  83. }
  84. }