using System.Collections; using NUnit.Framework; using UnityEngine; using UnityEngine.UI; using UnityEngine.TestTools; using BaseGames.UI; namespace BaseGames.Tests.PlayMode { /// /// UITween 静态库测试:验证补间在终态吸附、零时长立即返回、null 安全。 /// public class UITweenTests { private GameObject _go; [SetUp] public void SetUp() { _go = new GameObject("TweenHost", typeof(RectTransform), typeof(CanvasGroup)); } [TearDown] public void TearDown() { Object.DestroyImmediate(_go); } [UnityTest] public IEnumerator MoveAnchored_ReachesTarget() { var rect = _go.GetComponent(); rect.anchoredPosition = Vector2.zero; yield return _go.AddComponent().Run(UITween.MoveAnchored(rect, new Vector2(100, 50), 0.05f)); Assert.AreEqual(new Vector2(100, 50), rect.anchoredPosition); } [UnityTest] public IEnumerator FadeCanvasGroup_ReachesTarget() { var cg = _go.GetComponent(); cg.alpha = 0f; yield return _go.AddComponent().Run(UITween.FadeCanvasGroup(cg, 1f, 0.05f)); Assert.AreEqual(1f, cg.alpha, 0.001f); } [UnityTest] public IEnumerator ZeroDuration_SnapsImmediately() { var rect = _go.GetComponent(); yield return _go.AddComponent().Run(UITween.MoveAnchored(rect, new Vector2(7, 7), 0f)); Assert.AreEqual(new Vector2(7, 7), rect.anchoredPosition); } [UnityTest] public IEnumerator NullTarget_NoException() { yield return _go.AddComponent().Run(UITween.MoveAnchored(null, Vector2.one, 0.05f)); yield return _go.AddComponent().Run(UITween.FadeCanvasGroup(null, 1f, 0.05f)); Assert.Pass(); } /// 挂宿主跑协程的辅助 MonoBehaviour(测试场景无 EventSystem)。 private class TestRunner : MonoBehaviour { public IEnumerator Run(IEnumerator inner) { yield return StartCoroutine(inner); } } } }