.vs
Assets
Library
APIUpdater
Artifacts
Bee
BuildPlayerData
PackageCache
com.unity.collab-proxy@2.5.2
com.unity.editorcoroutines@1.0.0
com.unity.ext.nunit@1.0.6
com.unity.feature.development@1.0.1
com.unity.ide.rider@3.0.31
com.unity.ide.visualstudio@2.0.22
com.unity.ide.vscode@1.2.5
com.unity.modules.ai@1.0.0
com.unity.modules.androidjni@1.0.0
com.unity.modules.animation@1.0.0
com.unity.modules.assetbundle@1.0.0
com.unity.modules.audio@1.0.0
com.unity.modules.cloth@1.0.0
com.unity.modules.director@1.0.0
com.unity.modules.imageconversion@1.0.0
com.unity.modules.imgui@1.0.0
com.unity.modules.jsonserialize@1.0.0
com.unity.modules.particlesystem@1.0.0
com.unity.modules.physics2d@1.0.0
com.unity.modules.physics@1.0.0
com.unity.modules.screencapture@1.0.0
com.unity.modules.subsystems@1.0.0
com.unity.modules.terrain@1.0.0
com.unity.modules.terrainphysics@1.0.0
com.unity.modules.tilemap@1.0.0
com.unity.modules.ui@1.0.0
com.unity.modules.uielements@1.0.0
com.unity.modules.umbra@1.0.0
com.unity.modules.unityanalytics@1.0.0
com.unity.modules.unitywebrequest@1.0.0
com.unity.modules.unitywebrequestassetbundle@1.0.0
com.unity.modules.unitywebrequestaudio@1.0.0
com.unity.modules.unitywebrequesttexture@1.0.0
com.unity.modules.unitywebrequestwww@1.0.0
com.unity.modules.vehicles@1.0.0
com.unity.modules.video@1.0.0
com.unity.modules.vr@1.0.0
com.unity.modules.wind@1.0.0
com.unity.modules.xr@1.0.0
com.unity.performance.profile-analyzer@1.2.2
com.unity.settings-manager@2.0.1
com.unity.test-framework@1.1.33
Documentation~
UnityEditor.TestRunner
Api
CommandLineParser
CommandLineTest
GUI
NUnitExtension
TestLaunchers
PlatformSetup
AttributeFinderBase.cs
AttributeFinderBase.cs.meta
DelayedCallback.cs
DelayedCallback.cs.meta
EditModeLauncher.cs
EditModeLauncher.cs.meta
EditModeLauncherContextSettings.cs
EditModeLauncherContextSettings.cs.meta
PlatformSetup.meta
PlayerLauncher.cs
PlayerLauncher.cs.meta
PlayerLauncherBuildOptions.cs
PlayerLauncherBuildOptions.cs.meta
PlayerLauncherContextSettings.cs
PlayerLauncherContextSettings.cs.meta
PlayerLauncherTestRunSettings.cs
PlayerLauncherTestRunSettings.cs.meta
PlaymodeLauncher.cs
PlaymodeLauncher.cs.meta
PostbuildCleanupAttributeFinder.cs
PostbuildCleanupAttributeFinder.cs.meta
PrebuildSetupAttributeFinder.cs
PrebuildSetupAttributeFinder.cs.meta
RemotePlayerLogController.cs
RemotePlayerLogController.cs.meta
RemotePlayerTestController.cs
RemotePlayerTestController.cs.meta
RemoteTestResultReciever.cs
RemoteTestResultReciever.cs.meta
RuntimeTestLauncherBase.cs
RuntimeTestLauncherBase.cs.meta
TestLauncherBase.cs
TestLauncherBase.cs.meta
TestRun
TestRunner
TestSettings
UnityTestProtocol
Api.meta
AssemblyInfo.cs
AssemblyInfo.cs.meta
CommandLineParser.meta
CommandLineTest.meta
GUI.meta
NUnitExtension.meta
RequireApiProfileAttribute.cs
RequireApiProfileAttribute.cs.meta
RequirePlatformSupportAttribute.cs
RequirePlatformSupportAttribute.cs.meta
TestBuildAssemblyFilter.cs
TestBuildAssemblyFilter.cs.meta
TestLaunchers.meta
TestResultSerializer.cs
TestResultSerializer.cs.meta
TestRun.meta
TestRunner.meta
TestRunnerWindow.cs
TestRunnerWindow.cs.meta
TestRunnerWindowSettings.cs
TestRunnerWindowSettings.cs.meta
TestSettings.meta
UnityEditor.TestRunner.asmdef
UnityEditor.TestRunner.asmdef.meta
UnityTestProtocol.meta
UnityEngine.TestRunner
.signature
CHANGELOG.md
CHANGELOG.md.meta
CONTRIBUTING.md
CONTRIBUTING.md.meta
LICENSE.md
LICENSE.md.meta
UnityEditor.TestRunner.meta
UnityEngine.TestRunner.meta
package.json
package.json.meta
com.unity.testtools.codecoverage@1.2.6
com.unity.textmeshpro@3.0.6
com.unity.timeline@1.7.6
com.unity.ugui@1.0.0
com.unity.visualscripting@1.9.4
PackageManager
PlayModeViewStates
PlayerDataCache
ScriptAssemblies
Search
ShaderCache
SplashScreenCache
StateCache
UIElements
AnnotationManager
ArtifactDB
ArtifactDB-lock
BuildPlayer.prefs
BuildSettings.asset
EditorOnlyScriptingSettings.json
EditorOnlyVirtualTextureState.json
EditorSnapSettings.asset
EditorUserBuildSettings.asset
InspectorExpandedItems.asset
LastBuild.buildreport
LastSceneManagerSetup.txt
LibraryFormatVersion.txt
MonoManager.asset
SceneVisibilityState.asset
ScriptMapper
ShaderCache.db
SourceAssetDB
SourceAssetDB-lock
SpriteAtlasDatabase.asset
Style.catalog
expandedItems
ilpp.pid
Logs
Packages
ProjectSettings
UserSettings
obj
.vsconfig
Assembly-CSharp.Player.csproj
Assembly-CSharp.csproj
TM1.sln
Unity.CollabProxy.Editor.csproj
Unity.EditorCoroutines.Editor.csproj
Unity.Performance.Profile-Analyzer.Editor.csproj
Unity.PlasticSCM.Editor.csproj
Unity.Rider.Editor.csproj
Unity.Settings.Editor.csproj
Unity.TestTools.CodeCoverage.Editor.OpenCover.Model.csproj
Unity.TestTools.CodeCoverage.Editor.OpenCover.Mono.Reflection.csproj
Unity.TestTools.CodeCoverage.Editor.csproj
Unity.TextMeshPro.Editor.csproj
Unity.TextMeshPro.Player.csproj
Unity.TextMeshPro.csproj
Unity.Timeline.Editor.csproj
Unity.Timeline.Player.csproj
Unity.Timeline.csproj
Unity.VSCode.Editor.csproj
Unity.VisualScripting.Core.Editor.csproj
Unity.VisualScripting.Core.Player.csproj
Unity.VisualScripting.Core.csproj
Unity.VisualScripting.Flow.Editor.csproj
Unity.VisualScripting.Flow.Player.csproj
Unity.VisualScripting.Flow.csproj
Unity.VisualScripting.SettingsProvider.Editor.csproj
Unity.VisualScripting.Shared.Editor.csproj
Unity.VisualScripting.State.Editor.csproj
Unity.VisualScripting.State.Player.csproj
Unity.VisualScripting.State.csproj
Unity.VisualStudio.Editor.csproj
UnityEditor.TestRunner.csproj
UnityEditor.UI.csproj
UnityEngine.TestRunner.Player.csproj
UnityEngine.TestRunner.csproj
UnityEngine.UI.Player.csproj
UnityEngine.UI.csproj
162 lines
5.3 KiB
C#
162 lines
5.3 KiB
C#
![]() |
using System;
|
||
|
using System.Collections.Generic;
|
||
|
using NUnit.Framework.Interfaces;
|
||
|
using UnityEditor.SceneManagement;
|
||
|
using UnityEditor.TestTools.TestRunner.Api;
|
||
|
using UnityEditor.TestTools.TestRunner.GUI;
|
||
|
using UnityEngine;
|
||
|
using UnityEngine.SceneManagement;
|
||
|
using UnityEngine.TestRunner.Utils;
|
||
|
using UnityEngine.TestTools;
|
||
|
using UnityEngine.TestTools.TestRunner;
|
||
|
|
||
|
namespace UnityEditor.TestTools.TestRunner
|
||
|
{
|
||
|
internal class EditModeLauncher : TestLauncherBase
|
||
|
{
|
||
|
public static bool IsRunning;
|
||
|
internal readonly EditModeRunner m_EditModeRunner;
|
||
|
public bool launchedOutsideApi;
|
||
|
|
||
|
// provided for backward compatibility with Rider UnitTesting prior to Rider package v.1.1.1
|
||
|
public EditModeLauncher(UITestRunnerFilter filter, TestPlatform platform)
|
||
|
{
|
||
|
launchedOutsideApi = true;
|
||
|
var apiFilter = new[]
|
||
|
{
|
||
|
new Filter()
|
||
|
{
|
||
|
testMode = TestMode.EditMode,
|
||
|
testNames = filter.testNames,
|
||
|
categoryNames = filter.categoryNames,
|
||
|
groupNames = filter.groupNames,
|
||
|
assemblyNames = filter.assemblyNames
|
||
|
}
|
||
|
};
|
||
|
|
||
|
ScriptableObject.CreateInstance<TestRunnerApi>().Execute(new ExecutionSettings(apiFilter));
|
||
|
}
|
||
|
|
||
|
public EditModeLauncher(Filter[] filters, TestPlatform platform, bool runSynchronously, string[] orderedTestNames)
|
||
|
{
|
||
|
TestEnumerator.Reset();
|
||
|
m_EditModeRunner = ScriptableObject.CreateInstance<EditModeRunner>();
|
||
|
m_EditModeRunner.UnityTestAssemblyRunnerFactory = new UnityTestAssemblyRunnerFactory();
|
||
|
m_EditModeRunner.Init(filters, platform, runSynchronously, orderedTestNames);
|
||
|
}
|
||
|
|
||
|
public override void Run()
|
||
|
{
|
||
|
if (launchedOutsideApi)
|
||
|
{
|
||
|
// Do not use the launcher, as it will be relaunched trough the api. See ctor.
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
IsRunning = true;
|
||
|
|
||
|
SceneSetup[] previousSceneSetup;
|
||
|
if (!OpenNewScene(out previousSceneSetup))
|
||
|
return;
|
||
|
|
||
|
var callback = AddEventHandler<EditModeRunnerCallback>();
|
||
|
callback.previousSceneSetup = previousSceneSetup;
|
||
|
callback.runner = m_EditModeRunner;
|
||
|
AddEventHandler<CallbacksDelegatorListener>();
|
||
|
|
||
|
m_EditModeRunner.Run();
|
||
|
AddEventHandler<BackgroundListener>();
|
||
|
AddEventHandler<TestRunCallbackListener>();
|
||
|
|
||
|
if (m_EditModeRunner.RunningSynchronously)
|
||
|
m_EditModeRunner.CompleteSynchronously();
|
||
|
}
|
||
|
|
||
|
private static bool OpenNewScene(out SceneSetup[] previousSceneSetup)
|
||
|
{
|
||
|
previousSceneSetup = null;
|
||
|
|
||
|
var sceneCount = SceneManager.sceneCount;
|
||
|
|
||
|
var scene = SceneManager.GetSceneAt(0);
|
||
|
var isSceneNotPersisted = string.IsNullOrEmpty(scene.path);
|
||
|
|
||
|
if (sceneCount == 1 && isSceneNotPersisted)
|
||
|
{
|
||
|
EditorSceneManager.NewScene(NewSceneSetup.DefaultGameObjects, NewSceneMode.Single);
|
||
|
return true;
|
||
|
}
|
||
|
RemoveUntitledScenes();
|
||
|
|
||
|
// In case the user chose not to save the dirty scenes we reload them
|
||
|
ReloadUnsavedDirtyScene();
|
||
|
|
||
|
previousSceneSetup = EditorSceneManager.GetSceneManagerSetup();
|
||
|
|
||
|
scene = EditorSceneManager.NewScene(NewSceneSetup.EmptyScene, NewSceneMode.Additive);
|
||
|
SceneManager.SetActiveScene(scene);
|
||
|
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
private static void ReloadUnsavedDirtyScene()
|
||
|
{
|
||
|
for (var i = 0; i < SceneManager.sceneCount; i++)
|
||
|
{
|
||
|
var scene = SceneManager.GetSceneAt(i);
|
||
|
var isSceneNotPersisted = string.IsNullOrEmpty(scene.path);
|
||
|
var isSceneDirty = scene.isDirty;
|
||
|
if (isSceneNotPersisted && isSceneDirty)
|
||
|
{
|
||
|
EditorSceneManager.ReloadScene(scene);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private static void RemoveUntitledScenes()
|
||
|
{
|
||
|
int sceneCount = SceneManager.sceneCount;
|
||
|
|
||
|
var scenesToClose = new List<Scene>();
|
||
|
for (var i = 0; i < sceneCount; i++)
|
||
|
{
|
||
|
var scene = SceneManager.GetSceneAt(i);
|
||
|
var isSceneNotPersisted = string.IsNullOrEmpty(scene.path);
|
||
|
if (isSceneNotPersisted)
|
||
|
{
|
||
|
scenesToClose.Add(scene);
|
||
|
}
|
||
|
}
|
||
|
foreach (Scene scene in scenesToClose)
|
||
|
{
|
||
|
EditorSceneManager.CloseScene(scene, true);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public class BackgroundListener : ScriptableObject, ITestRunnerListener
|
||
|
{
|
||
|
public void RunStarted(ITest testsToRun)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
public void RunFinished(ITestResult testResults)
|
||
|
{
|
||
|
IsRunning = false;
|
||
|
}
|
||
|
|
||
|
public void TestStarted(ITest test)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
public void TestFinished(ITestResult result)
|
||
|
{
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public T AddEventHandler<T>() where T : ScriptableObject, ITestRunnerListener
|
||
|
{
|
||
|
return m_EditModeRunner.AddEventHandler<T>();
|
||
|
}
|
||
|
}
|
||
|
}
|