123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Linq;
- using System.Reflection;
- using NUnit;
- using NUnit.Framework.Interfaces;
- using NUnit.Framework.Internal;
- using NUnit.Framework.Internal.Execution;
- using UnityEngine.TestTools;
- using UnityEngine.TestTools.NUnitExtensions;
-
- namespace UnityEngine.TestRunner.NUnitExtensions.Runner
- {
- internal interface IUnityTestAssemblyRunner
- {
- ITest LoadedTest { get; }
- ITestResult Result { get; }
- bool IsTestLoaded { get; }
- bool IsTestRunning { get; }
- bool IsTestComplete { get; }
- UnityWorkItem TopLevelWorkItem { get; set; }
- UnityTestExecutionContext GetCurrentContext();
- ITest Load(Assembly[] assemblies, TestPlatform testPlatform, IDictionary<string, object> settings);
- void LoadTestTree(ITest testTree);
- IEnumerable Run(ITestListener listener, ITestFilter filter);
- void StopRun();
- }
-
- internal class UnityTestAssemblyRunner : IUnityTestAssemblyRunner
- {
- private readonly UnityTestAssemblyBuilder unityBuilder;
- private readonly WorkItemFactory m_Factory;
-
- protected UnityTestExecutionContext Context { get; set; }
-
- public UnityTestExecutionContext GetCurrentContext()
- {
- return UnityTestExecutionContext.CurrentContext;
- }
-
- protected IDictionary<string, object> Settings { get; set; }
- public ITest LoadedTest { get; protected set; }
-
- public ITestResult Result
- {
- get { return TopLevelWorkItem == null ? null : TopLevelWorkItem.Result; }
- }
-
- public bool IsTestLoaded
- {
- get { return LoadedTest != null; }
- }
-
- public bool IsTestRunning
- {
- get { return TopLevelWorkItem != null && TopLevelWorkItem.State == WorkItemState.Running; }
- }
- public bool IsTestComplete
- {
- get { return TopLevelWorkItem != null && TopLevelWorkItem.State == WorkItemState.Complete; }
- }
-
- public UnityTestAssemblyRunner(UnityTestAssemblyBuilder builder, WorkItemFactory factory, UnityTestExecutionContext context)
- {
- unityBuilder = builder;
- m_Factory = factory;
- Context = context;
- }
-
- public ITest Load(Assembly[] assemblies, TestPlatform testPlatform, IDictionary<string, object> settings)
- {
- // The setting of the TestMode should happen when running tests.
- if (Context != null)
- {
- Context.TestMode = testPlatform;
- }
- Settings = settings;
-
- if (settings.ContainsKey(FrameworkPackageSettings.RandomSeed))
- Randomizer.InitialSeed = (int)settings[FrameworkPackageSettings.RandomSeed];
-
- var tree = unityBuilder.Build(assemblies, Enumerable.Repeat(testPlatform, assemblies.Length).ToArray(), settings);
-
- return LoadedTest = tree;
- }
-
- public void LoadTestTree(ITest testTree)
- {
- LoadedTest = testTree;
- }
-
- public IEnumerable Run(ITestListener listener, ITestFilter filter)
- {
- TopLevelWorkItem = m_Factory.Create(LoadedTest, filter);
- TopLevelWorkItem.InitializeContext(Context);
- Context.Listener = listener;
-
- return TopLevelWorkItem.Execute();
- }
-
- public UnityWorkItem TopLevelWorkItem { get; set; }
-
- public void StopRun()
- {
- if (IsTestRunning)
- {
- TopLevelWorkItem.Cancel(false);
- }
- }
- }
- }
|