accounts/docs/development/testing.md
2026-04-14 16:32:15 +08:00

96 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Testing Guide / 测试策略
## 中文
### 文档校验基线
本仓库当前最可靠的文档一致性校验命令是:
```bash
go test ./...
```
原因:
- 它直接覆盖当前 Go 模块里的可编译包。
- 文档中涉及的包名、导出符号、接口签名、请求结构和行为路径都必须至少与这个基线不冲突。
- 本次工程文档补齐以源码为唯一事实源,因此文档更新完成后应重新执行这条命令确认基线仍为绿色。
### 常用命令
```bash
go test ./...
make test
make integration-test
```
说明:
- `make test` 是仓库对 `go test` 的脚本封装。
- `make integration-test` 运行 `tests/e2e/superadmin-login/run-test-scripts.sh`,依赖本地数据库与初始化流程。
### 当前包级测试面
| 包 | 当前状态 | 说明 |
| --- | --- | --- |
| `account/api` | 有测试 | 覆盖注册、登录、MFA、session、sync config、admin settings、xworkmate、accounting、homepage video 等主 API 路径。 |
| `account/internal/agentserver` | 有测试 | 覆盖 registry 构造、认证、状态上报。 |
| `account/internal/mailer` | 有测试 | 覆盖 TLS mode 解析与 sender 构造。 |
| `account/internal/service` | 有测试 | 覆盖 user metrics 聚合行为。 |
| `account/internal/store` | 有测试 | 覆盖 memory / postgres 相关关键行为与 xworkmate 归一化。 |
| `account/internal/xrayconfig` | 有测试 | 覆盖 generator、gorm source、periodic syncer。 |
| `cmd/*`、`internal/auth`、`internal/agentmode`、`internal/syncer`、`internal/utils`、`internal/model`、`config`、`sql` | 暂无测试文件 | 文档应以源码对读为主,并明确哪些行为缺少直接测试保护。 |
### 文档更新后的核对清单
1. `RegisterRoutes` 中出现的 endpoint文档必须存在且路径、方法、鉴权方式一致。
2. `internal/store.Store`、`auth.TokenService`、`service.UserMetricsService`、`xrayconfig.PeriodicSyncer` 等关键接口的签名必须与源码逐字对齐。
3. 对于暂无测试文件的包,文档必须避免推测性表述,只记录源码中可直接确认的行为。
## English
### Documentation Verification Baseline
The most reliable verification command for documentation alignment in this repository is:
```bash
go test ./...
```
Why this is the baseline:
- It covers all buildable Go packages in the current module.
- Package names, exported symbols, interface signatures, request structs, and behavior described in the docs must remain compatible with this baseline.
- This documentation refresh uses source code as the only source of truth, so the baseline should be rerun after every doc update.
### Common Commands
```bash
go test ./...
make test
make integration-test
```
Notes:
- `make test` is the repository wrapper around Go tests.
- `make integration-test` runs `tests/e2e/superadmin-login/run-test-scripts.sh` and depends on local database setup plus initialization steps.
### Current Package-Level Test Surface
| Package | Current status | Notes |
| --- | --- | --- |
| `account/api` | Tested | Covers registration, login, MFA, session, sync config, admin settings, xworkmate, accounting, and homepage video paths. |
| `account/internal/agentserver` | Tested | Covers registry construction, authentication, and status reporting. |
| `account/internal/mailer` | Tested | Covers TLS mode parsing and sender construction. |
| `account/internal/service` | Tested | Covers user metrics aggregation behavior. |
| `account/internal/store` | Tested | Covers key memory / postgres behavior plus xworkmate normalization. |
| `account/internal/xrayconfig` | Tested | Covers generator, GORM source, and periodic syncer behavior. |
| `cmd/*`, `internal/auth`, `internal/agentmode`, `internal/syncer`, `internal/utils`, `internal/model`, `config`, `sql` | No direct test files | Documentation for these packages should stay source-driven and avoid speculative claims. |
### Post-Update Checklist
1. Every endpoint registered in `RegisterRoutes` must exist in the docs with matching path, method, and auth mode.
2. Key signatures such as `internal/store.Store`, `auth.TokenService`, `service.UserMetricsService`, and `xrayconfig.PeriodicSyncer` must match the source exactly.
3. For packages without direct tests, the docs must record only behavior that is directly visible in source.