Orisumi

Overview

测试的分工、框架、Case 与报告

Orisumi 的测试分三类,都用 TUnit 执行。本页说明每类测试验证什么、用到哪些公共工具,以及 Case 页和测试报告怎样对应。

测试分工

类型验证什么数据库
单元测试独立的规则和转换逻辑不启动
集成测试Observer、后端组件和 PostgreSQL 的协作需要数据库的用例,每个用例一个独立的测试数据库
端到端测试完整的用户操作流程需要数据库的用例使用独立的测试数据库

框架与公共工具

TUnit 通过 Microsoft.Testing.Platform 运行,版本 1.72.16 由 Directory.Packages.props 管理。

tests/Orisumi.Testing 为集成测试和端到端测试提供数据库工具。它使用 Orisumi.Testing 命名空间,每个类型一个文件,依赖 Infrastructure、EF Core、Npgsql 和 Testcontainers.PostgreSql,版本同样由 Directory.Packages.props 管理。

类型职责
PostgresTestInstance启动和销毁 PostgreSQL 容器,创建用例数据库
TestDatabase提供连接字符串,释放时删除用例数据库

集成测试和端到端测试各自创建自己的容器,细节见 Database。

模型测试

tests/Orisumi.Model.Tests 按 Core 的规则检查 Core 和 Application:提交、读取和删除版本,EntitySchema 的校验,引用的枚举,以及事实时间。存储使用内存实现,时间由可控的 TimeProvider 提供,不需要数据库。每个测试用注释写明它验证的规则编号,例如 // VERSION-7。

dotnet test --project tests/Orisumi.Model.Tests/Orisumi.Model.Tests.csproj

集成测试

tests/Orisumi.Integration.Tests 按 Case 组织,覆盖四部分:

自动测试不调用 macOS 原生接口,原生读取的手动验证步骤见 src/Observers/Orisumi.Observer.ForegroundState/README.md。

Case

每个 Case 一页,写为什么验证、前置条件、操作和预期结果。Case ID 稳定,与测试方法名无关;测试用 [Property("caseId", "…")] 引用它。页面末尾显示最新报告中匹配这个 ID 的执行结果,参数化的测试会有多条结果。这样设计的理由见 ADR · 开发验证与测试证据。

报告

Integration Report 显示 TUnit 集成测试的 JSON 报告。本地文档站每次刷新都重新读取 TestResults 中最新的报告;公开站显示发布时运行集成测试得到的报告,见 ADR · 文档站的发布。JSON 是测试结果的权威来源;查看报告不会运行测试。报告由 fumadocs-test-reports 展示,可以搜索、筛选,查看详情、输出和时间线。

贡献者

页面历史