2 个版本
使用旧的 Rust 2015
0.1.1 | 2018 年 6 月 23 日 |
---|---|
0.1.0 | 2018 年 6 月 23 日 |
#68 in #截图
24KB
337 行
XRay
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);
}
用法
- 编写您的测试。
- 运行您的测试。
- 第一次测试将失败,因为没有参考截图。测试期间实际拍摄的截图将被保存在
test_output/<test_name>/actual.png
。 - 验证生成的截图是否正确。
- 将生成的截图复制到
references/<test_name>.png
- 继续开发。
- 如果您破坏了应用程序,导致测试不再渲染相同的输出,测试将失败,并将生成以下文件
test_output/<test_name>/actual.png
-> 包含测试期间拍摄的截图。test_output/<test_name>/expected.png
-> 包含与截图进行比较的参考图像。test_output/<test_name>/diff.png
-> 仅包含不同的像素。
已知问题
- Linux/X11:您应该以单线程模式运行测试。由于每个测试都会创建 X11 窗口进行渲染,快速创建多个窗口可能会导致其中一些无法获取输入法。这可以通过将新窗口创建包裹在互斥锁中来修复,但我还没有时间调查。
依赖关系
~12MB
~76K SLoC