public static void StartTestRun(string[] testsToRunList, ITestRunnerCallback eventListener, bool performUndo) { #if UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2 if (performUndo) { Undo.RegisterSceneUndo("UnitTestRunSceneSave"); } #else var undoGroup = Undo.GetCurrentGroup(); #endif var callbackList = new TestRunnerCallbackList(); if (eventListener != null) { callbackList.Add(eventListener); } try { foreach (var unitTestEngine in TestEngines) { unitTestEngine.RunTests(testsToRunList, callbackList); } } catch (Exception e) { Debug.LogException(e); callbackList.RunFinishedException(e); } finally { if (performUndo) { var undoStartTime = DateTime.Now; #if UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2 Undo.PerformUndo(); #else Undo.RevertAllDownToGroup(undoGroup); #endif if ((DateTime.Now - undoStartTime).Seconds > 1) { Debug.LogWarning("Undo after unit test run took " + (DateTime.Now - undoStartTime).Seconds + " seconds. Consider running unit tests on a new scene for better performance."); } } EditorUtility.ClearProgressBar(); if (UnityEditorInternal.InternalEditorUtility.inBatchMode) { EditorApplication.Exit(0); } } }
private void StartTestRun() { var okToRun = true; if (runTestOnANewScene && !UnityEditorInternal.InternalEditorUtility.inBatchMode) { if (autoSaveSceneBeforeRun) { EditorApplication.SaveScene(); } okToRun = EditorApplication.SaveCurrentSceneIfUserWantsTo(); } if (okToRun) { var currentScene = EditorApplication.currentScene; if (runTestOnANewScene || UnityEditorInternal.InternalEditorUtility.inBatchMode) { EditorApplication.NewScene(); } var callbackList = new TestRunnerCallbackList(); callbackList.Add(new TestRunnerEventListener(this)); try { foreach (var unitTestEngine in testEngines) { unitTestEngine.RunTests(testsToRunList, callbackList); } } catch (Exception e) { Debug.LogException(e); callbackList.RunFinishedException(e); } finally { EditorUtility.ClearProgressBar(); if (runTestOnANewScene && !UnityEditorInternal.InternalEditorUtility.inBatchMode) { EditorApplication.OpenScene(currentScene); } if (UnityEditorInternal.InternalEditorUtility.inBatchMode) { EditorApplication.Exit(0); } shouldUpdateTestList = true; } } }