Files
everything-claude-code/docs/zh-CN/rules/csharp/testing.md

1.2 KiB

paths
paths
**/*.cs
**/*.csx
**/*.csproj

C# 测试

本文档扩展了 common/testing.md 中关于 C# 的特定内容。

测试框架

  • 单元测试和集成测试首选 xUnit
  • 使用 FluentAssertions 编写可读性强的断言
  • 使用 MoqNSubstitute 来模拟依赖项
  • 当集成测试需要真实基础设施时,使用 Testcontainers

测试组织

  • tests/ 下镜像 src/ 的结构
  • 明确区分单元测试、集成测试和端到端测试的覆盖范围
  • 根据行为而非实现细节来命名测试
public sealed class OrderServiceTests
{
    [Fact]
    public async Task FindByIdAsync_ReturnsOrder_WhenOrderExists()
    {
        // Arrange
        // Act
        // Assert
    }
}

ASP.NET Core 集成测试

  • 使用 WebApplicationFactory<TEntryPoint> 进行 API 集成测试覆盖
  • 通过 HTTP 测试身份验证、验证和序列化,而不是绕过中间件

覆盖率

  • 目标行覆盖率 80% 以上
  • 将覆盖率重点放在领域逻辑、验证、身份验证和失败路径上
  • 在 CI 中运行 dotnet test 并启用覆盖率收集(在可用的情况下)