using NUnit.Framework; using UnityEngine; using BaseGames.Core; namespace BaseGames.Tests.PlayMode { /// /// RequiredFieldValidator 反射扫描测试。 /// public class RequiredFieldValidatorTests { private class Sample : MonoBehaviour { [RequiredField] public GameObject Required; [RequiredField("提示文本")] public string RequiredString; public GameObject Optional; } [Test] public void MissingField_LogsWarning() { var go = new GameObject("ReqHost"); var s = go.AddComponent(); s.Required = null; s.RequiredString = ""; // 期待两条警告(Required + RequiredString) UnityEngine.TestTools.LogAssert.Expect(LogType.Warning, new System.Text.RegularExpressions.Regex(@"\[RequiredField\] Sample\.Required.*")); UnityEngine.TestTools.LogAssert.Expect(LogType.Warning, new System.Text.RegularExpressions.Regex(@"\[RequiredField\] Sample\.RequiredString.*")); RequiredFieldValidator.ValidateAll(s); Object.DestroyImmediate(go); } [Test] public void FilledField_NoWarning() { var go = new GameObject("ReqHost2"); var s = go.AddComponent(); s.Required = go; s.RequiredString = "ok"; RequiredFieldValidator.ValidateAll(s); // 不应有警告 Object.DestroyImmediate(go); } } }