using System.Collections;
using System.Linq;
using System.IO;
using NUnit.Framework;
#if UNITY_EDITOR
using UnityEditor;
#endif
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.TestTools;
namespace PlayModeTests_12s
{
public class SceneTests : IPrebuildSetup, IPostBuildCleanup
{
private string originalScene;
private const string k_SceneName = "Assets/MyGameScene.unity";
public void Setup()
{
#if UNITY_EDITOR
if (EditorBuildSettings.scenes.Any(scene => scene.path == k_SceneName))
{
return;
}
var includedScenes = EditorBuildSettings.scenes.ToList();
includedScenes.Add(new EditorBuildSettingsScene(k_SceneName, true));
EditorBuildSettings.scenes = includedScenes.ToArray();
#endif
}
[UnitySetUp]
public IEnumerator SetupBeforeTest()
{
originalScene = SceneManager.GetActiveScene().path;
if (!File.Exists(k_SceneName))
{
Assert.Inconclusive("The path to the Scene is not correct. Set the correct path for the k_SceneName variable.");
}
SceneManager.LoadScene(k_SceneName);
yield return null; // Skip a frame, allowing the scene to load.
}
[Test]
public void VerifyScene()
{
var gameObject = GameObject.Find("GameObjectToTestFor");
Assert.That(gameObject, Is.Not.Null, $"GameObjectToTestFor not found in {SceneManager.GetActiveScene().path}.");
}
[TearDown]
public void TeardownAfterTest()
{
SceneManager.LoadScene(originalScene);
}
public void Cleanup()
{
#if UNITY_EDITOR
EditorBuildSettings.scenes = EditorBuildSettings.scenes.Where(scene => scene.path != k_SceneName).ToArray();
#endif
}
}
}