#截图 #测试 #游戏

bin+lib xray

Rust 游戏的截图测试

2 个版本

使用旧的 Rust 2015

0.1.1 2018 年 6 月 23 日
0.1.0 2018 年 6 月 23 日

#68 in #截图

Apache-2.0

24KB
337

XRay

pipeline status

Rust 游戏的截图测试

功能

  • 比较测试时拍摄的截图与参考截图。
  • 输出实际拍摄的截图和仅包含不同像素的图像。
  • 与 OpenGL 应用兼容

示例测试(用于 Piston + OpenGL 应用)

#[test]
fn check_basic_screen() {
    let size = [1280, 720];
    let mut app = App::new(size, build_glutin_window(size));
    let Size { width: draw_width, height: draw_height } = app.window.draw_size();
    let Size { width, height } = app.window.size();
    app.render_into_viewport(Viewport {
        rect: [0, 0, draw_width as i32, draw_height as i32],
        window_size: [width, height],
        draw_size: [draw_width, draw_height]
    });
    xray::screenshot_test("basic_rendering/initial_map", 0, 0, draw_width, draw_height);
}

用法

  1. 编写您的测试。
  2. 运行您的测试。
  3. 第一次测试将失败,因为没有参考截图。测试期间实际拍摄的截图将被保存在 test_output/<test_name>/actual.png
  4. 验证生成的截图是否正确。
  5. 将生成的截图复制到 references/<test_name>.png
  6. 继续开发。
  7. 如果您破坏了应用程序,导致测试不再渲染相同的输出,测试将失败,并将生成以下文件
    • test_output/<test_name>/actual.png -> 包含测试期间拍摄的截图。
    • test_output/<test_name>/expected.png -> 包含与截图进行比较的参考图像。
    • test_output/<test_name>/diff.png -> 仅包含不同的像素。

已知问题

  • Linux/X11:您应该以单线程模式运行测试。由于每个测试都会创建 X11 窗口进行渲染,快速创建多个窗口可能会导致其中一些无法获取输入法。这可以通过将新窗口创建包裹在互斥锁中来修复,但我还没有时间调查。

依赖关系

~12MB
~76K SLoC