public void Setup() { Assert.That(Application.isPlaying, "UniDiIntegrationTestFixture is meant to be used for play mode tests only. Please ensure your test file '{0}' is outside of the editor folder and try again.", GetType()); UniDiTestUtil.DestroyEverythingExceptTestRunner(true); StaticContext.Clear(); }
public IEnumerator LoadScenes(params string[] sceneNames) { Assert.That(!_hasLoadedScene, "Attempted to load scene twice!"); _hasLoadedScene = true; // Clean up any leftovers from previous test UniDiTestUtil.DestroyEverythingExceptTestRunner(false); Assert.That(SceneContainers.IsEmpty()); for (int i = 0; i < sceneNames.Length; i++) { var sceneName = sceneNames[i]; Assert.That(Application.CanStreamedLevelBeLoaded(sceneName), "Cannot load scene '{0}' for test '{1}'. The scenes used by SceneTestFixture derived classes must be added to the build settings for the test to work", sceneName, GetType()); Log.Info("Loading scene '{0}' for testing", sceneName); var loader = SceneManager.LoadSceneAsync(sceneName, i == 0 ? LoadSceneMode.Single : LoadSceneMode.Additive); while (!loader.isDone) { yield return(null); } SceneContext sceneContext = null; if (ProjectContext.HasInstance) // ProjectContext might be null if scene does not have a scene context { var scene = SceneManager.GetSceneByName(sceneName); sceneContext = ProjectContext.Instance.Container.Resolve <SceneContextRegistry>() .TryGetSceneContextForScene(scene); } _sceneContainers.Add(sceneContext == null ? null : sceneContext.Container); } _sceneContainer = _sceneContainers.Where(x => x != null).LastOrDefault(); if (_sceneContainer != null) { _sceneContainer.Inject(this); } }
void DestroyEverythingInternal(bool immediate) { if (_sceneContext != null) { // We need to use DestroyImmediate so that all the IDisposable's etc get processed immediately before // next test runs if (immediate) { GameObject.DestroyImmediate(_sceneContext.gameObject); } else { GameObject.Destroy(_sceneContext.gameObject); } _sceneContext = null; } UniDiTestUtil.DestroyEverythingExceptTestRunner(immediate); StaticContext.Clear(); }
public virtual void Teardown() { UniDiTestUtil.DestroyEverythingExceptTestRunner(true); StaticContext.Clear(); SetMemberDefaults(); }