SuperAPI AI 工具集

bevy-testing

测试与质量

查看项目

更新于 10-15 17:34

技能介绍

用途:为 Bevy 0.19 编写确定性测试。适用于系统/插件需要最小 App 测试环境并直接断言世界状态、固定调度与计时器/消息/观察者需要确定性步进、异步任务需在测试中完成而不靠任意 sleep、以及渲染输出需要基于截图的视觉回归。

主要能力:构建只包含被测行为所需插件的最小 App,控制时钟与输入,显式步进后检查世界状态或输出。不要在普通单元/集成测试中调用 App::run()。用 TimeUpdateStrategy::FixedTimesteps(n) 让每次 app.update() 推进固定步长并恰好运行 n 次固定循环;需要零 tick 帧、累积时间或追赶时用 ManualDuration;需要精确绝对时刻时用 ManualInstant 并在每次 update 前推进其资源。

用法要点:首次 app.update() 以零 delta 初始化实时时钟,计数 FixedTimesteps 前需先预热。直接运行 FixedUpdate 会绕过固定主时钟/消息语义。延迟 Commands 在同步点前不可见。异步完成应注入确定性内联/假执行器,或用有严格最大步数/截止时间的可观察完成谓词循环,失败时报告队列/任务状态,绝不 sleep。生产系统可用 bevy::tasks::futures::check_ready 轮询 Task<T> 或非阻塞排空结果通道。丢弃 Bevy Task 会取消它,除非已分离。

适用场景:ECS/游戏逻辑用 App::new() 加所需插件(如 TimePlugin、AssetPlugin),无窗口/渲染/音频/文件系统契约时避免 DefaultPlugins;渲染验收则启动真实渲染 App,捕获 Screenshot,等待 ScreenshotCaptured,并与带版本基线和容差的保存产物比较。

限制:资料未提供具体安装命令、版本兼容范围、收费与平台信息。测试应只安装被测对象所需插件与资源,输入与随机种子显式化,隔离持久/全局状态,固定输入测试覆盖每次 update 的零、一、多次固定 tick,消息游标按写入前后有意创建,视觉失败保留实际、期望与差异图像及运行元数据,基线仅通过显式审查操作更新。