Unity Test Framework 基于 NUnit,为 Unity 提供 EditMode(快速、不运行运行时)和 PlayMode(完整 Unity 生命周期)两种测试。
用途与场景:单元测试游戏逻辑、集成测试系统、测试 MonoBehaviour 生命周期、自动化回归测试及 CI/CD 测试门禁。
主要能力与用法:
- 测试程序集:通过 .asmdef 配置 EditMode(includePlatforms 设为 Editor)与 PlayMode(不限制平台),引用 nunit.framework.dll 和 NSubstitute.dll,并用 UNITY_INCLUDE_TESTS 约束。
- EditMode 测试:用 [TestFixture]、[SetUp]、[TearDown]、[Test];支持参数化 [TestCase]、[TestCaseSource]。
- PlayMode 测试:用 [UnitySetUp]、[UnityTearDown]、[UnityTest] 配合 IEnumerator 等待帧或时间。
- 异步测试:支持 async Task,也可用 UniTask.ToCoroutine 包装为协程。
- Mock:使用 NSubstitute 的 Substitute.For、Returns、Received、Arg.Any/Arg.Is 及异步 mock。
- VContainer:用 LifetimeScope.Create 注册 mock 与被测服务,验证 Installer 解析依赖。
- 断言与工具:提供常用 NUnit 断言、自定义断言、测试基类、异步 helpers、ScriptableObject 创建助手。
- 分类与过滤:用 [Category]、[Platform]、[UnityPlatform]、[Ignore] 标记,CLI 可用 -testFilter "Category=Combat"。
- CI/CD:命令行用 Unity -runTests -batchmode -projectPath 加 -testPlatform、-testResults、-logFile 运行 EditMode/PlayMode 测试。
限制:资料仅给出模式与示例,未提供具体版本要求、性能数据、收费信息或平台支持细节。