using System; using System.Collections; using System.IO; using System.Reflection; using NUnit.Framework; using UnityEngine.TestTools; namespace Tests_13s { internal class ScriptAddingTests { private const string pathToFile = "Assets/Tests_13s/TempScript.cs"; [UnityTest] public IEnumerator CreatedScriptIsVerified() { CreateScript(); yield return new RecompileScripts(); var verification = VerifyScript(); Assert.That(verification, Is.EqualTo("OK")); } [UnityTearDown] public IEnumerator Teardown() { if (!File.Exists(pathToFile)) { yield break; } if (!File.Exists(pathToFile + ".meta")) { yield break; } File.Delete(pathToFile); File.Delete(pathToFile + ".meta"); yield return new RecompileScripts(); } private void CreateScript() { try { File.WriteAllText(pathToFile, @" public class MyTempScript { public string Verify() { return ""OK""; } }"); } catch(DirectoryNotFoundException) { Assert.Inconclusive("The path to file is incorrect. Please make sure that the path to TempScript is valid."); } } private string VerifyScript() { Type type = Type.GetType("MyTempScript", true); object instance = Activator.CreateInstance(type); var verifyMethod = type.GetMethod("Verify", BindingFlags.Instance | BindingFlags.Public); var verifyResult = verifyMethod.Invoke(instance, new object[0]); return verifyResult as string; } } }