本文档提供了关于 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
未找到覆盖率工具:
cargo install cargo-llvm-cov
安装rustup component add llvm-tools-preview
添加组件权限错误:
启用测试的调试日志记录:
RUST_LOG=debug RUST_TEST_THREADS=1 cargo test -- --nocapture
在贡献新功能时:
为新功能添加全面的测试
确保所有测试在提交之前在本地通过
在适当的情况下包括单元测试和集成测试
如果添加新的测试模式,更新测试文档
维护或改进代码覆盖率
有关贡献的更多信息,请参阅项目的贡献指南。
- 原文链接: docs.openzeppelin.com/mo...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!