测试指南 - OpenZeppelin 文档

本文档提供了关于 OpenZeppelin Monitor 测试的信息,包括运行测试、生成覆盖率报告和理解测试结构。文档详细描述了测试的组织结构,包括单元测试、集成测试和基于属性的测试,并提供了运行特定测试类别(如属性测试、集成测试或单元测试)的命令。此外,还介绍了如何生成HTML和终端覆盖率报告,并提供了一些故障排除技巧,以及贡献测试的指南。

测试指南

本文档提供有关测试 OpenZeppelin Monitor 的信息,包括运行测试、生成覆盖率报告和理解测试结构。

测试组织

该项目包括组织成不同类别的综合测试套件:

测试类型

  • 单元测试:位于 src/ 模块中,与其测试的代码位于同一位置

  • 集成测试:位于 tests/integration/ 目录中

  • 基于属性的测试:位于 tests/properties/ 目录中

  • Mock 实现:位于 tests/integration/mocks/

测试结构

tests/
├── integration/        # 集成测试
│   ├── blockchain/     # 区块链客户端测试
│   ├── blockwatcher/   # 区块监控测试
│   ├── filters/        # 过滤器逻辑测试
│   ├── fixtures/       # 测试数据和配置
│   ├── mocks/          # Mock 实现
│   └── ...
├── properties/         # 基于属性的测试
│   ├── filters/        # 过滤器属性测试
│   ├── notifications/  # 通知属性测试
│   └── ...
└── integration.rs      # 集成测试入口点

运行测试

所有测试

运行完整的测试套件:

RUST_TEST_THREADS=1 cargo test
需要 RUST_TEST_THREADS=1 来防止访问共享资源(如配置文件或网络连接)时发生测试冲突。

特定测试类别

基于属性的测试:

RUST_TEST_THREADS=1 cargo test properties

集成测试:

RUST_TEST_THREADS=1 cargo test integration

仅单元测试:

RUST_TEST_THREADS=1 cargo test --lib

覆盖率报告

前提条件

安装覆盖率工具:

rustup component add llvm-tools-preview
cargo install cargo-llvm-cov

生成覆盖率

HTML 覆盖率报告:

RUST_TEST_THREADS=1 cargo +stable llvm-cov --html --open

这将在 target/llvm-cov/html/ 中生成一个 HTML 报告,并在你的浏览器中打开它。

终端覆盖率报告:

RUST_TEST_THREADS=1 cargo +stable llvm-cov

故障排除

常见问题

测试挂起或超时:

  • 确保已设置 RUST_TEST_THREADS=1
  • 验证 mock 设置是否正确

未找到覆盖率工具:

  • 使用 cargo install cargo-llvm-cov 安装
  • 使用 rustup component add llvm-tools-preview 添加组件

权限错误:

  • 确保测试目录可写
  • 检查测试 fixtures 的文件权限

调试输出

启用测试的调试日志记录:

RUST_LOG=debug RUST_TEST_THREADS=1 cargo test -- --nocapture

贡献测试

在贡献新功能时:

  1. 为新功能添加全面的测试

  2. 确保所有测试在提交之前在本地通过

  3. 在适当的情况下包括单元测试和集成测试

  4. 如果添加新的测试模式,更新测试文档

  5. 维护或改进代码覆盖率

有关贡献的更多信息,请参阅项目的贡献指南。

← 错误处理

贡献指南 →

  • 原文链接: docs.openzeppelin.com/mo...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
OpenZeppelin
OpenZeppelin
江湖只有他的大名,没有他的介绍。