64 lines
1.8 KiB
Markdown
64 lines
1.8 KiB
Markdown
|
||
|
||
# 单元测试
|
||
|
||
```
|
||
cargo test
|
||
|
||
# 查看输出
|
||
cargo test -- --nocapture
|
||
```
|
||
|
||
# 覆盖率(cargo-llvm-cov)
|
||
|
||
安装工具:
|
||
|
||
```
|
||
rustup component add llvm-tools-preview
|
||
cargo install cargo-llvm-cov --locked
|
||
```
|
||
|
||
统计行覆盖率并要求 >=90%:
|
||
|
||
```
|
||
./scripts/coverage.sh
|
||
# 或
|
||
cargo llvm-cov --fail-under-lines 90
|
||
```
|
||
|
||
默认会复用现有插桩产物,不会先 clean。需要强制全量重编译时:
|
||
|
||
```
|
||
COVERAGE_FORCE_CLEAN=1 ./scripts/coverage.sh
|
||
```
|
||
|
||
说明:
|
||
- 默认行为适合本地重复确认覆盖率,避免每次都重编译整套插桩目标;
|
||
- 默认还会设置 `RPKI_SKIP_HEAVY_SCRIPT_REPLAY_TESTS=1`,跳过会拉起 shell replay pipeline 的重型集成测试,避免 coverage 期间额外触发 `target/release` 构建;
|
||
- 默认还会设置 `RPKI_SKIP_HEAVY_BLACKBOX_TESTS=1`,跳过更慢的 blackbox CLI / CIR record 脚本测试,进一步降低日常 coverage 成本;
|
||
- 默认还会设置 `RPKI_SKIP_HEAVY_CRYPTO_TESTS=1`,跳过需要大量 OpenSSL 生成证书/CRL 的重型密码学测试,进一步压缩日常 coverage 时长;
|
||
- 如需把这批脚本回放测试也纳入 coverage,可显式关闭该开关:
|
||
|
||
```
|
||
RPKI_SKIP_HEAVY_SCRIPT_REPLAY_TESTS=0 ./scripts/coverage.sh
|
||
```
|
||
|
||
如需连同第二批 blackbox 测试一起跑:
|
||
|
||
```
|
||
RPKI_SKIP_HEAVY_BLACKBOX_TESTS=0 ./scripts/coverage.sh
|
||
```
|
||
|
||
如需连同重型 OpenSSL 证书路径测试一起跑:
|
||
|
||
```
|
||
RPKI_SKIP_HEAVY_CRYPTO_TESTS=0 ./scripts/coverage.sh
|
||
```
|
||
|
||
- replay 脚本现在也支持通过环境变量注入现成二进制,避免找不到二进制时自动 `cargo build --release`:
|
||
- `RPKI_BIN`
|
||
- `CIR_MATERIALIZE_BIN`
|
||
- `CIR_EXTRACT_INPUTS_BIN`
|
||
- `CCR_TO_COMPARE_VIEWS_BIN`
|
||
- `COVERAGE_FORCE_CLEAN=1` 适合需要完全从零重建插桩目标时使用。
|