4个版本 (2个破坏性更新)
0.3.1 | 2024年4月2日 |
---|---|
0.3.0 | 2024年4月2日 |
0.2.0 | 2024年4月1日 |
0.1.0 | 2024年4月1日 |
#293 in 图像
每月35次下载
在task-picker中使用
85KB
576 代码行
egui-screenshot-testing
使用截图和将它们与保存的版本进行比较来测试egui应用程序的辅助函数。想法是获取应用程序状态并使用TestBackend
进行渲染。然后,您可以比较保存的截图并比较生成的视觉效果是否相同。
use egui_screenshot_testing::TestBackend;
let mut backend = TestBackend::new("src/tests/expected", "src/tests/actual", |_ctx| {
// You could do any initialization here.
});
backend.assert_screenshot_after_n_frames("test_case_a.png", (150, 100), 5, move |ctx| {
// Add any egui elements
egui::CentralPanel::default().show(ctx, |ui| {
ui.heading("Hello World");
});
});
截图与存储在指定目录中的图像文件进行比较。
Cargo.toml
src/
[...]
tests/
expected/
test_case_a.png
test_case_b.png
[...]
在失败时,生成的截图将被写入包含所有实际截图的文件夹。您可以手动或使用图像差异工具(例如ImageMagick的compare
工具)比较图像,并决定是否需要通过将文件复制到预期文件夹来更新快照。如果设置了环境变量EGUI_SCREENSHOT_REPLACE
,则所有预期文件都将替换为实际文件,而不会导致测试失败。这在创建尚未存在快照的初始测试集时非常有用。
有关用法示例,请参阅git仓库中的examples/
文件夹。
第三方依赖项
此软件依赖于多个第三方项目。特别是,它在src/egui_skia
子文件夹中捆绑了Lucas Merlin Meurer的egui_skia crate,以在无头环境中渲染截图。它还包含来自Frans Skarman的更改,以更新egui_skia以与新版本的egui一起使用。以下为egui_skia的原始许可声明。
MIT License
Copyright (c) 2022 Lucas Merlin Meurer
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
此文件夹中的"third-party-licenses.html"文件中记录了其他库。
依赖项
~16–24MB
~347K SLoC