public override void FetchData()
        {
            var sceneName = SceneManager.GetActiveScene().name;

            if (sceneName.StartsWith("InitTestScene"))
            {
                sceneName = PlaymodeTestsController.GetController().settings.originalScene;
            }

            var testListBuilder = new TestTreeViewBuilder(m_RootTest, m_TestListGUI.newResultList, m_TestListGUI.m_TestRunnerUIFilter);

            m_RootItem = testListBuilder.BuildTreeView(null, false, sceneName);
            SetExpanded(m_RootItem, true);
            if (m_RootItem.hasChildren && m_RootItem.children.Count == 1)
            {
                SetExpanded(m_RootItem.children[0], true);
            }

            if (m_ExpandTreeOnCreation)
            {
                SetExpandedWithChildren(m_RootItem, true);
            }

            m_TestListGUI.newResultList = new List <TestRunnerResult>(testListBuilder.results);
            m_TestListGUI.m_TestRunnerUIFilter.availableCategories = testListBuilder.AvailableCategories;
            m_NeedRefreshRows = true;
        }
        internal static T AddEventHandlerMonoBehaviour <T>(this PlaymodeTestsController controller) where T : MonoBehaviour, ITestRunnerListener
        {
            var eventHandler = controller.gameObject.AddComponent <T>();

            SetListeners(controller, eventHandler);
            return(eventHandler);
        }
 private static void SetListeners(PlaymodeTestsController controller, ITestRunnerListener eventHandler)
 {
     UnityEventTools.AddPersistentListener(controller.testStartedEvent, eventHandler.TestStarted);
     UnityEventTools.AddPersistentListener(controller.testFinishedEvent, eventHandler.TestFinished);
     UnityEventTools.AddPersistentListener(controller.runStartedEvent, eventHandler.RunStarted);
     UnityEventTools.AddPersistentListener(controller.runFinishedEvent, eventHandler.RunFinished);
 }
        internal static T AddEventHandlerScriptableObject <T>(this PlaymodeTestsController controller) where T : ScriptableObject, ITestRunnerListener
        {
            var eventListener = ScriptableObject.CreateInstance <T>();

            AddEventHandlerScriptableObject(controller, eventListener);
            return(eventListener);
        }
            private static void OnPlayModeStateChanged(PlayModeStateChange state)
            {
                if (!PlaymodeTestsController.IsControllerOnScene())
                {
                    return;
                }
                var runner = PlaymodeTestsController.GetController();

                if (runner == null)
                {
                    return;
                }
                if (state == PlayModeStateChange.ExitingPlayMode)
                {
                    AssetDatabase.DeleteAsset(runner.settings.bootstrapScene);
                    ExecutePostBuildCleanupMethods(runner.m_Runner.LoadedTest, runner.settings.BuildNUnitFilter(), Application.platform);
                    IsRunning = false;
                }
                else if (state == PlayModeStateChange.EnteredEditMode)
                {
                    ConsoleWindow.SetConsoleErrorPause(runner.settings.consoleErrorPaused);
                    Application.runInBackground = runner.settings.runInBackgroundValue;
                    //reopen the original scene once we exit playmode
                    ReopenOriginalScene(runner);
                }
            }
        public void UpdateCallback()
        {
            if (m_IsTestSetupPerformed)
            {
                if (m_Scene.IsValid())
                {
                    SceneManager.SetActiveScene(m_Scene);
                }
                EditorApplication.update   -= UpdateCallback;
                EditorApplication.isPlaying = true;
            }
            else
            {
                testFilter = m_Settings.BuildNUnitFilter();
                var runner = LoadTests(testFilter);

                var exceptionThrown = ExecutePreBuildSetupMethods(runner.LoadedTest, testFilter);
                if (exceptionThrown)
                {
                    EditorApplication.update -= UpdateCallback;
                    IsRunning = false;
                    var controller = PlaymodeTestsController.GetController();
                    ReopenOriginalScene(controller);
                    AssetDatabase.DeleteAsset(controller.settings.bootstrapScene);
                    CallbacksDelegator.instance.RunFailed("Run Failed: One or more errors in a prebuild setup. See the editor log for details.");
                    return;
                }
                m_IsTestSetupPerformed = true;
            }
        }
 private static void SetListeners <T>(PlaymodeTestsController controller, TestRunnerListener eventHandler)
 {
     UnityEventTools.AddPersistentListener <string>(controller.testStartedEvent, new UnityAction <string>(eventHandler.TestStarted));
     UnityEventTools.AddPersistentListener <TestResult>(controller.testFinishedEvent, new UnityAction <TestResult>(eventHandler.TestFinished));
     UnityEventTools.AddPersistentListener <string, List <string> >(controller.runStartedEvent, new UnityAction <string, List <string> >(eventHandler.RunStarted));
     UnityEventTools.AddPersistentListener <List <TestResult> >(controller.runFinishedEvent, new UnityAction <List <TestResult> >(eventHandler.RunFinished));
 }
Пример #8
0
 private void OnPlayModeStateChanged(PlayModeStateChange state)
 {
     if (state == PlayModeStateChange.ExitingPlayMode)
     {
         EditorApplication.playModeStateChanged -= OnPlayModeStateChanged;
         //We need to make sure we don't block NUnit thread in case we exit PlayMode earlier
         PlaymodeTestsController.TryCleanup();
     }
 }
 public override void RunFinished(List <TestResult> testResults)
 {
     if (string.IsNullOrEmpty(base.resultDirectory))
     {
         base.resultDirectory = PlaymodeTestsController.GetController().settings.resultFilePath;
     }
     if (string.IsNullOrEmpty(base.resultFileName))
     {
         base.resultFileName = "TestResults-PlayMode";
     }
     base.RunFinished(testResults);
 }
Пример #10
0
        protected void ExecuteSceneSetupMethods(TestRunnerFilter testRunnerFilter)
        {
            PlaymodeTestsController controller = PlaymodeTestsController.GetController();

            foreach (MethodInfo info in GetSceneSetupMethods(controller.settings.filter))
            {
                Debug.Log("Executing setup in " + info.DeclaringType.Name);
                try
                {
                    info.Invoke(null, null);
                }
                catch (Exception exception)
                {
                    Debug.LogException(exception);
                }
            }
        }
        internal static T AddEventHandlerScriptableObject <T>(this PlaymodeTestsController controller) where T : ScriptableObject, TestRunnerListener
        {
            T local  = ScriptableObject.CreateInstance <T>();
            T local1 = local;

            UnityEventTools.AddPersistentListener <string>(controller.testStartedEvent, new UnityAction <string>(local1.TestStarted));
            T local3 = local;

            UnityEventTools.AddPersistentListener <TestResult>(controller.testFinishedEvent, new UnityAction <TestResult>(local3.TestFinished));
            T local4 = local;

            UnityEventTools.AddPersistentListener <string, List <string> >(controller.runStartedEvent, new UnityAction <string, List <string> >(local4.RunStarted));
            T local5 = local;

            UnityEventTools.AddPersistentListener <List <TestResult> >(controller.runFinishedEvent, new UnityAction <List <TestResult> >(local5.RunFinished));
            return(local);
        }
Пример #12
0
        public override void FetchData()
        {
            string name = SceneManager.GetActiveScene().name;

            if (name.StartsWith("InitTestScene"))
            {
                name = PlaymodeTestsController.GetController().settings.originalScene;
            }
            TestTreeViewBuilder builder = new TestTreeViewBuilder(this.m_TestListGUI.GetTestList(), this.m_TestListGUI.newResultList);

            base.m_RootItem = builder.BuildTreeView(null, false, name);
            this.SetExpanded(base.m_RootItem, true);
            if (this.m_ExpandTreeOnCreation)
            {
                this.SetExpandedWithChildren(base.m_RootItem, true);
            }
            this.m_TestListGUI.newResultList = new List <TestResult>(builder.results);
            base.m_NeedRefreshRows           = true;
        }
 internal static void AddEventHandlerScriptableObject(this PlaymodeTestsController controller, ITestRunnerListener obj)
 {
     SetListeners(controller, obj);
 }
 protected static void ReopenOriginalScene(PlaymodeTestsController runner)
 {
     ReopenOriginalScene(runner.settings.originalScene);
 }
Пример #15
0
 public static void Fail()
 {
     PlaymodeTestsController.GetController().FailPlaymodeTest();
 }
Пример #16
0
 public static void Pass()
 {
     PlaymodeTestsController.GetController().PassPlaymodeTest();
 }