跳转至

C# 测试

此文件使用 C# 特定内容扩展 common/testing.md。

测试框架

  • 单元测试和集成测试优先使用 xUnit
  • 使用 FluentAssertions 编写可读性更好的断言
  • 使用 Moq 或 NSubstitute 模拟依赖项
  • 当集成测试需要真实基础设施时使用 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

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 ev/ECC