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游戏开发

Download history 6/week @ 2024-04-06 1/week @ 2024-06-01 1/week @ 2024-06-08

每月下载量:275

MIT/Apache

32KB
704 代码行

Bevy集成测试工具 (Bitt)

用于在bevy游戏引擎中构建的应用程序的集成测试工具。

Bitt,(名词) 船上甲板上的两个支柱,用于固定系泊绳或电缆。

文档 crates.io

如何使用

目前,仅实现了记录/回放测试。要使用它,请向您的应用程序中添加一个系统,在通过测试用例时调用 bitt::Asserter::pass。还添加名为要使用的测试用例的 bitt::PlaybackTestGear 插件和一个配置测试工具的 bitt::PlaybackTestingOptions。您的输入和工件将分别保存在 bitt/test_scripts/<script name>.bitt_scriptbitt/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 放入仓库,但 gitignore bitt/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