SuperAPI AI 工具集

dotnet-unit-testing

测试与质量

查看项目

更新于 10-16 02:10

技能介绍

本技能用于为采用 Clean Architecture 的 .NET 项目生成单元测试,重点覆盖命令(Command)和查询(Query)处理器(Handler)。资料显示其测试技术栈包括:xUnit(测试框架)、NSubstitute(Mock 库)、FluentAssertions(可读断言),并采用 AAA(Arrange、Act、Assert)模式组织测试。

主要能力与测试类型 技能按测试目的给出四类参考:成功测试(验证正常路径,如 Should_ReturnSuccess_When_ValidRequest)、失败测试(验证错误处理,如 Should_ReturnFailure_When_NotFound)、验证测试(验证输入校验,如 Should_ReturnValidationError_When_EmptyName)、行为测试(验证副作用,如 Should_CallRepository_When_ValidRequest)。

测试项目结构 资料给出的目录组织为:tests/ 下放置 {name}.Application.UnitTests 项目,其内按功能(Feature)分目录,例如 Create{Entity} 下包含命令处理器测试与命令校验器测试,Get{Entity}ById 下包含查询处理器测试;另外设有 Abstractions 目录存放 BaseTest.cs,以及项目文件。

提供的模板 技能提供了多个代码模板:测试项目文件(.csproj,目标框架 net8.0,通过 PackageReference 引入 FluentAssertions 6.12.0、Microsoft.NET.Test.Sdk 17.8.0、NSubstitute 5.1.0、NSubstitute.Analyzers.CSharp 1.0.16、xunit 2.6.2、xunit.runner.visualstudio 2.5.4、coverlet.collector 6.0.0,并通过 ProjectReference 引用 application 与 domain 项目);基础测试类 BaseTest(提供 CancellationToken 属性、CreateMock 泛型 Mock 创建、SuccessResult 与 FailureResult 辅助方法);命令处理器测试模板;查询处理器测试模板(基于 ISqlConnectionFactory 与 Dapper 的简化示例);校验器测试模板(使用 FluentValidation.TestHelper,覆盖名称必填、长度上限、OrganizationId 非空等场景,并用 Theory/InlineData 验证合法值);以及领域实体测试模板的开头部分。

使用方式 按照资料提供的文件与目录结构,将模板放入对应的测试项目中,替换占位符如 {name}、{Entity}、{Feature}、{Aggregate} 等,并依据被测处理器与实体的实际接口调整 Mock 设置、结果断言和辅助方法。查询处理器测试中涉及 Dapper 连接的部分仅给出简化示例,资料说明实践中需要使用类似 Dapper.Contrib.Tests 的库或为 IDbConnection 创建测试替身。

适用场景与限制 适用于采用 Clean Architecture、xUnit、NSubstitute、FluentAssertions 与 FluentValidation 的 .NET 项目,用于快速搭建命令与查询处理器、校验器及领域实体的单元测试骨架。资料未提供该技能的安装命令、发布渠道、收费或价格信息,也未提供运行测试的具体命令与完整领域实体测试模板内容,上述内容暂未提供。