convert/TEST.md

30 lines
1.6 KiB
Markdown

# Test Report: @go/convert
## 📋 测试概览
- **测试时间**: 2026-04-22
- **测试环境**: darwin/amd64 (Intel i9-9980HK)
- **Go 版本**: 1.25.0
## ✅ 功能测试 (Functional Tests)
| 场景 | 状态 | 描述 |
| :--- | :--- | :--- |
| `TestConvertMatrix` | PASS | 包含 13 个子测试,涵盖基础全互转、自动包装/解包、CSV/JSON 切分、深层指针穿透。 |
| `TestComplexFrictionlessMapping` | PASS | 验证 Map 到 Struct 的极致去摩擦映射(忽略大小写、忽略下划线/中划线、类型自动纠正)。 |
| `TestFuncConversion` | PASS | 验证函数类型的动态映射与参数/返回值自动转换。 |
| `TestParseHook` | PASS | 验证 `ParseXxx` 定制化转换钩子。 |
## 🛡️ 鲁棒性防御 (Robustness)
- **单值与切片自动适配**:输入 `[]int{200}``int` 目标,自动取首值;输入 `100``[]int` 目标,自动包装。
- **极致 Key 容忍**:键名 `user_id``USER-NAME` 等均能精准匹配。
- **零值安全性**:转换失败或输入 nil 时,目标被重置为干净的零值,不保留脏数据。
## ⚡ 性能基准 (Benchmarks)
| 函数 | 平均耗时 | 性能分析 |
| :--- | :--- | :--- |
| `MatrixConvert` | **1226 ns/op** | 包含反射解析、Map 键名归一化及嵌套映射,性能处于工业级水准。 |
## 🔍 Self-Review 修正记录
1. **代码纠错**:移除了未使用变量 `fromArg`
2. **逻辑补强**:在基础类型转换分支中引入了 `effectiveFrom` 解包逻辑,支持切片到单值的自动转换。
3. **命名一致性**:统一使用 `To` 作为主入口,`Convert` 作为别名。