测试与验证
仓库包含主解决方案、独立应用和 src/FreeKit 子模块。它们并不共享一个覆盖全部项目的测试入口,因此“命令成功”之前先确认命令实际覆盖了什么。
主解决方案
在仓库根目录执行:
dotnet restore FreeKitModules.slnx
dotnet build FreeKitModules.slnx -c Release
dotnet test FreeKitModules.slnx -c Release
FreeKitModules.slnx 当前包含 28 个项目,其中测试入口只有 src/Test/FreeKit.Tests/FreeKit.Tests.csproj。auth/、basic/ 和 cg/ 是独立解决方案,不会被以上命令覆盖;修改这些应用时,应在各自目录运行对应 .slnx 或 .csproj。
主测试项目的已知范围
主测试项目覆盖 BuildingBlocks、Identity、CmsKit 和 Platform 的单元 / 集成式测试,但它在 .csproj 中明确排除了 9 个 CmsKit 测试源文件。因而根目录 dotnet test 通过,不能解释为仓库内每个 *Tests.cs 文件都已编译和执行。
可按测试类做聚焦验证:
dotnet test src/Test/FreeKit.Tests/FreeKit.Tests.csproj \
--filter FullyQualifiedName~PlatformArchitectureTests
dotnet test src/Test/FreeKit.Tests/FreeKit.Tests.csproj \
--filter FullyQualifiedName~Identity
PlatformArchitectureTests 会检查 Platform 的大部分 Application / Controller 类型没有直接依赖 FreeSql.IFreeSql;Holiday 是测试中注明的历史豁免。
FreeKit 子模块测试
src/FreeKit/FreeKit.slnx 另含 6 个测试项目,覆盖 Identity.FreeSql、DataProtection.FreeSql、OutputCaching.FreeRedis、SignalR.FreeRedis、HealthChecks.FreeSql 以及 FreeKit 核心能力:
dotnet test src/FreeKit/FreeKit.slnx -c Release
这些测试可能依赖数据库或 Redis。失败时先查看具体测试项目的 appsettings.json、fixture 和环境前置条件,不要把基础设施不可达误判为业务断言失败。
文档站验证
文档内容、侧边栏或站点配置有改动时,在 docs-site/ 执行:
pnpm install --frozen-lockfile
pnpm typecheck
pnpm build
三步分别验证锁文件可复现、TypeScript 配置正确,以及所有 Markdown / MDX、内部链接和路由能够生成静态站点。只运行本地开发服务器不足以发现全部断链。
按改动选择验证
| 改动 | 最小验证 | 建议追加 |
|---|---|---|
| 单一 Service / Domain 规则 | 对应测试类或命名空间过滤 | 主测试项目全量 |
| 模块注册、DI、公共构建块 | 主解决方案 Build + Test | 启动相关 Host 做健康检查 |
src/FreeKit 包 | 对应子模块测试项目 | FreeKit.slnx 全量测试 |
| Host 配置或路由 | Build + 启动目标 Host | 验证 /health、Swagger / RapiDoc 和业务路由 |
| 文档与导航 | pnpm typecheck + pnpm build | 人工检查首页和关键教程 |
测试需要真实外部服务、密钥或生产数据时,应使用本地替代配置与占位值。不要把仓库配置中的真实凭据复制进测试输出、issue 或文档。