SuperAPI AI 工具集

testing

测试与质量

查看项目

更新于 10-16 05:02

技能介绍

用途:为 .NET 10 应用提供一套测试策略与模式,指导如何组织单元测试与集成测试。

核心原则:强调集成测试价值最高,一个 WebApplicationFactory 测试可覆盖路由、绑定、校验、业务逻辑与持久化;主张在测试中使用真实数据库(Testcontainers 启动真实 PostgreSQL/SQL Server),认为内存提供程序会掩盖事务、约束、SQL 生成等问题;要求遵循 AAA 模式(Arrange、Act、Assert),并测试行为而非实现细节。

主要能力:

  1. xUnit v3 基础:使用 [Fact]、[Theory] 与 [InlineData]/[MemberData] 编写参数化测试。
  2. 集成测试:通过 WebApplicationFactory<Program> 与 IClassFixture<ApiFixture> 测试完整 HTTP 管道,ApiFixture 使用 IAsyncLifetime 管理容器生命周期(xUnit v3 的 InitializeAsync 返回 ValueTask)。
  3. Testcontainers:提供 MsSqlContainer、PostgreSqlContainer、RedisContainer 的构建示例,并可在 ConfigureWebHost 中替换真实 DbContext 配置,启动后执行迁移。
  4. Verify 快照测试:对复杂响应对象使用 Verify,首次运行生成 .verified.txt,后续比较差异。
  5. 测试数据构建器:用 Builder 模式(如 OrderBuilder)构造测试数据。
  6. 时间相关测试:使用 TimeProvider 与 FakeTimeProvider(Microsoft.Extensions.TimeProvider.Testing)推进时间。
  7. 命名约定:MethodName_StateUnderTest_ExpectedBehavior。

适用场景:.NET 10 API 端点测试、业务逻辑隔离测试、依赖数据库的测试、复杂响应验证、时间相关逻辑、外部 API 依赖(建议 WireMock.Net 或 HttpMessageHandler 桩)、共享昂贵 Fixture。

限制与建议:资料列出反模式,包括集成测试用内存数据库、测实现细节、共享可变状态、写无断言测试;并给出决策指南供选择合适测试方式。具体安装命令、版本约束与完整代码未在资料中提供。