using UnityEditor; using UnityEditor.TestTools.TestRunner.Api; using UnityEngine; /// /// One-click EditMode test run for the skill system. /// public static class SkillSystemTestRunner { [MenuItem("Tools/Nightclub Arcadia/Run Skill EditMode Tests")] public static void RunEditModeTests() { var api = ScriptableObject.CreateInstance(); var filter = new Filter { testMode = TestMode.EditMode, assemblyNames = new[] { "NightclubArcadia.Skills.Tests" }, }; api.RegisterCallbacks(new Callbacks()); api.Execute(new ExecutionSettings(filter)); Debug.Log("[SkillSystemTestRunner] EditMode tests started — watch the Console / Test Runner."); } sealed class Callbacks : ICallbacks { public void RunStarted(ITestAdaptor testsToRun) { } public void RunFinished(ITestResultAdaptor result) { Debug.Log($"[SkillSystemTestRunner] Finished. Pass:{result.PassCount} Fail:{result.FailCount} Skip:{result.SkipCount}"); if (result.FailCount > 0) { Debug.LogError("[SkillSystemTestRunner] One or more skill EditMode tests failed."); } } public void TestStarted(ITestAdaptor test) { } public void TestFinished(ITestResultAdaptor result) { if (result.TestStatus == TestStatus.Failed) { Debug.LogError($"[SkillSystemTestRunner] FAIL {result.FullName}\n{result.Message}\n{result.StackTrace}"); } } } }