暫無描述
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.

UnityTestAssemblyBuilder.cs 2.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Reflection;
  5. using NUnit;
  6. using NUnit.Framework.Api;
  7. using NUnit.Framework.Interfaces;
  8. using NUnit.Framework.Internal;
  9. using UnityEngine.TestRunner.NUnitExtensions;
  10. namespace UnityEngine.TestTools.NUnitExtensions
  11. {
  12. internal class UnityTestAssemblyBuilder : DefaultTestAssemblyBuilder, IAsyncTestAssemblyBuilder
  13. {
  14. private readonly string m_ProductName;
  15. private readonly ITestSuiteModifier[] m_TestSuiteModifiers;
  16. public UnityTestAssemblyBuilder(string[] orderedTestNames)
  17. {
  18. m_TestSuiteModifiers = orderedTestNames != null && orderedTestNames.Length > 0
  19. ? new ITestSuiteModifier[] {new OrderedTestSuiteModifier(orderedTestNames)}
  20. : new ITestSuiteModifier[0];
  21. m_ProductName = Application.productName;
  22. }
  23. public ITest Build(Assembly[] assemblies, TestPlatform[] testPlatforms, IDictionary<string, object> options)
  24. {
  25. var test = BuildAsync(assemblies, testPlatforms, options);
  26. while (test.MoveNext())
  27. {
  28. }
  29. return test.Current;
  30. }
  31. public IEnumerator<ITest> BuildAsync(Assembly[] assemblies, TestPlatform[] testPlatforms, IDictionary<string, object> options)
  32. {
  33. var productName = string.Join("_", m_ProductName.Split(Path.GetInvalidFileNameChars()));
  34. var suite = new TestSuite(productName);
  35. for (var index = 0; index < assemblies.Length; index++)
  36. {
  37. var assembly = assemblies[index];
  38. var platform = testPlatforms[index];
  39. var assemblySuite = Build(assembly, options) as TestSuite;
  40. if (assemblySuite != null && assemblySuite.HasChildren)
  41. {
  42. assemblySuite.Properties.Set("platform", platform);
  43. suite.Add(assemblySuite);
  44. }
  45. yield return null;
  46. }
  47. suite.ParseForNameDuplicates();
  48. foreach (var testSuiteModifier in m_TestSuiteModifiers)
  49. {
  50. suite = testSuiteModifier.ModifySuite(suite);
  51. }
  52. yield return suite;
  53. }
  54. public static Dictionary<string, object> GetNUnitTestBuilderSettings(TestPlatform testPlatform)
  55. {
  56. var emptySettings = new Dictionary<string, object>();
  57. emptySettings.Add(FrameworkPackageSettings.TestParameters, "platform=" + testPlatform);
  58. return emptySettings;
  59. }
  60. }
  61. }