本文档概述了 Tauri 框架中使用的测试架构、实践和工作流程。测试系统确保在多种平台和功能配置下的可靠性,同时验证框架的核心功能。有关为 Tauri 开发做贡献的信息,请参阅 为 Tauri 做贡献,有关发布流程的详细信息,请参阅 发布流程。
Tauri 采用多层测试策略,涵盖单元测试、集成测试、跨平台验证和性能基准测试。测试系统旨在验证在各种操作系统(Windows、macOS、Linux)和架构(x86_64、aarch64)以及移动目标(iOS、Android)上的功能。
来源: .github/workflows/test-core.yml29-74
Tauri 中的单元测试遵循 Rust 的常规模式,即模块内测试,测试通常放置在与被测试代码相同文件中的 tests 子模块中。这些测试侧重于单个函数和组件,以在隔离环境中验证它们的正确行为。
集成测试验证 Tauri 框架不同组件之间的交互。这些测试通常涉及创建一个最小的 Tauri 应用程序实例,并测试前端和后端组件之间的通信。
鉴于 Tauri 的跨平台性质,测试会在多个平台上运行以确保一致的行为。测试系统使用矩阵策略来运行跨
来源: .github/workflows/test-core.yml33-74
Tauri 包括性能基准测试,用于衡量和跟踪框架的性能特征。这些基准测试侧重于
来源: .github/workflows/bench.yml67-73
Tauri 使用 GitHub Actions 进行持续集成,有多个工作流程专门用于测试框架的各个方面
来源: .github/workflows/test-core.yml5-11 .github/workflows/udeps.yml5-11 .github/workflows/bench.yml5-15
核心测试工作流程利用矩阵策略来测试
平台和目标:
功能配置:
对于 Android 等交叉编译目标,工作流程使用 cross 工具进行构建和测试。
来源: .github/workflows/test-core.yml33-74 .github/workflows/test-core.yml96-104
在为 Tauri 组件编写测试时,请遵循以下模式
tests 子模块中Tauri 的集成测试通常涉及
当测试在不同平台上有不同行为的代码时
#[cfg(target_os = "...")]) 编写特定于平台的测试Tauri 维护一个全面的基准测试系统,以跟踪性能指标随时间的变化。
来源: .github/workflows/bench.yml67-73 .github/workflows/bench.yml82-92
基准测试系统会构建具有特定特征的测试应用程序
这些基准测试使用 hyperfine 等工具进行计时,并使用 memory_profiler 进行内存使用情况跟踪。结果存储在单独的存储库中,并可随时间跟踪以识别性能回归。
来源: .github/workflows/bench.yml53-63
Tauri 使用 cargo-udeps 来识别和删除未使用的依赖项,这有助于维护精简的代码库并缩短编译时间。
udeps 工作流程
来源: .github/workflows/udeps.yml20-154
通过遵循这些测试实践,Tauri 框架在其支持的平台和配置中保持了可靠性和性能。