跳到主要内容

测试与验证

仓库包含主解决方案、独立应用和 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.csprojauth/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 或文档。