6 个版本 (破坏性更新)
0.5.0 | 2024年3月2日 |
---|---|
0.4.1 | 2024年2月29日 |
0.3.0 | 2024年2月16日 |
0.2.0 | 2024年1月18日 |
0.1.0 | 2024年1月17日 |
523 在 游戏开发
每月下载量:275
32KB
704 代码行
Bevy集成测试工具 (Bitt)
用于在bevy游戏引擎中构建的应用程序的集成测试工具。
Bitt,(名词) 船上甲板上的两个支柱,用于固定系泊绳或电缆。
如何使用
目前,仅实现了记录/回放测试。要使用它,请向您的应用程序中添加一个系统,在通过测试用例时调用 bitt::Asserter::pass
。还添加名为要使用的测试用例的 bitt::PlaybackTestGear
插件和一个配置测试工具的 bitt::PlaybackTestingOptions
。您的输入和工件将分别保存在 bitt/test_scripts/<script name>.bitt_script
和 bitt/artefacts/<script name>
中。
然后启动游戏,它应正常运行,直到调用 bitt::Asserter::pass
,此时它将保存输入。在后续运行中,它将加载输入并重新播放。如果断言器在输入完成后未通过,则会引发恐慌,导致非零返回代码,可用于失败CI。当检查断言器时,有一些灵活性。在窗口前后都会在工件文件夹中保存截图。
有关示例,请参阅
crates/star_demo/src/bin/star_test.rs
了解如何使用键盘/控制器输入的输入录制和回放。- 使用环境变量来选择要运行的测试用例和其他参数。
- 为测试提供单独的二进制文件。
crates/click_demo/src/main.rs
了解如何播放测试鼠标驱动的游戏。- 使用 clap 选择要运行的测试用例和其他参数。
- 测试和正常运行的二进制文件相同。
.github/workflows/commit-validation.yml
用于在 GitHub Action 中运行集成测试。- 包括如何在 GitHub Action 日志中使工件可见。
警告和注意事项
- 目前,在回放模式下,自然输入仍然会被监听。这可能导致测试在不应失败时失败。这将在未来得到修复。
- 在 CI 中运行事物可能不会像本地那样精确。
- Github action 运行器无法播放音频,这可能导致行为差异。
- CI 可能以不同的、通常较低的帧率运行
- 讽刺的是,该框架尚未得到很好的测试。它可能不会在您的系统上工作。如果您有任何问题,请在 GitHub 上提交问题。
- Bevy 将鼠标位置存储在窗口中。这意味着任何关注鼠标移动的测试在无头模式下可能无法工作。
建议
- 将
bitt/test_scripts
放入仓库,但 gitignorebitt/artefacts
。 - 使用
cargo-make
运行集成测试 - 使用
clap
解析命令行参数,而不是使用环境变量来选择测试用例
反馈和贡献
欢迎反馈和贡献。如果您有任何反馈或建议,请在 GitHub 上提交问题。我有一些想法
- 并行化无头测试
- 内置分片方法,以便多个运行器可以并行运行测试
- 记录测试运行的视频
您也可以在我的 bevy discord 上找到我,ID 为 @hajhawa
。
版本表
Bevy 版本 | BITT 版本 |
---|---|
0.13 | 0.5 |
0.12 | 0.3 |
在升级到 Bevy 的新版本时,可能需要重新记录您的测试。
依赖项
37–73MB
~1.5M SLoC