跳到主要内容

9.1 测试策略总览

测试的目标不是追求覆盖率数字,而是降低修改代码时的风险。全栈项目通常需要把测试分成多个层次。

应用场景

  • 业务规则频繁变化,需要防止回归。
  • API 被多个前端或第三方调用,需要稳定契约。
  • 数据访问逻辑复杂,需要验证查询、事务和并发行为。
  • 发布前需要自动化质量门禁。

推荐分层

层次主要对象速度典型工具
单元测试纯业务逻辑、领域服务、验证器xUnit、FluentAssertions
集成测试API、数据库、依赖注入、配置WebApplicationFactory、Testcontainers
端到端测试浏览器流程、关键路径Playwright

重点难点

  • 不要把所有测试都写成端到端测试;它们慢且定位问题困难。
  • 数据访问测试要避免依赖开发者本机数据库状态。
  • 测试命名要描述业务行为,而不是方法名。

示例

public sealed class PriceCalculatorTests
{
[Fact]
public void CalculateTotal_AppliesDiscount_WhenMemberIsActive()
{
var total = PriceCalculator.CalculateTotal(100m, isActiveMember: true);

Assert.Equal(90m, total);
}
}

练习

  • 为 Todo 的“已完成任务不能重复完成”规则写单元测试。
  • POST /todos 写集成测试,验证成功和校验失败两种响应。