with one click
test
ASP.NET Core / Aspire / TUnit 测试规范与最佳实践。用于集成测试/ApiTest、测试用例编写、测试失败排查与验证流程。
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
ASP.NET Core / Aspire / TUnit 测试规范与最佳实践。用于集成测试/ApiTest、测试用例编写、测试失败排查与验证流程。
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Microsoft Agent Framework 1.1 (C#) 开发规范与集成要点。USE FOR: ChatClientAgent、AIFunctionFactory、IChatClient tools、AgentThread/Conversation、ResponseFormat、Handoff/Workflow、MCP tool、Memory/ContextProvider、Observability、Foundry Local OpenAI 兼容接入。
Perigon 主入口技能:用于基于 Perigon CLI/MCP 进行项目脚手架、模块与服务生成、DTO/Manager/Controller/Request 客户端生成、MCP 配置与 Studio 操作,并在后端与前端开发中按照模板约定完成代码生成与落地。Use when: any Perigon-based development task, scaffolding, code generation, module/service creation, API client generation, MCP setup, Studio usage, backend/frontend implementation that should follow Perigon conventions.
Angular 21+ 前端开发规范(standalone/Material/signals)。用于 Angular 组件/页面/路由/表单、Material UI、signals 状态、i18n、前端样式与交互相关任务。
全栈代码审查规范(质量/性能/安全/架构/风格)。用于 Code Review、PR 审查、质量门禁、安全与性能检查等任务。
技术文档编写规范 - README、任务分配文档、开发指南、部署文档
| name | test |
| description | ASP.NET Core / Aspire / TUnit 测试规范与最佳实践。用于集成测试/ApiTest、测试用例编写、测试失败排查与验证流程。 |
在编写后端测试代码时,如单元测试、集成测试及其他与测试相关的内容。
tests\ApiTest\:是基于Aspire/Tunit的测试项目,主要用来编写集成测试。TestHttpClientData,用来进行请求授权,使用[ClassDataSource<TestHttpClientData>(Shared = SharedType.PerTestSession)] 特性标记,以避免每次请求都需要重新获取Token。TUnit提供的断言方法进行结果验证,确保测试结果符合预期。集成测试
tests\ApiTest\{ModuleName}\,将该模块的所有测试代码放在该目录下。{EntityName}Tests.cs,将该实体相关的所有测试方法放在该文件中。单元测试
tests\UnitTest\用于编写单元测试,用来测试基础类库和算法逻辑,通常不涉及数据库和业务逻辑。无需清理数据,因为使用aspire运行测试结束时,会自动清理库数据。
public class SystemUserTests
{
[ClassDataSource<TestHttpClientData>(Shared = SharedType.PerTestSession)]
[Test]
public async Task GetUserInfo_ShouldReturnUserDetails(TestHttpClientData httpClientData)
{
var httpClient = httpClientData.HttpClient;
var response = await httpClient.GetAsync("/api/systemUser/userinfo");
await Assert.That(response.StatusCode).IsEqualTo(HttpStatusCode.OK);
var userInfo = await response.Content.ReadFromJsonAsync<UserInfoDto>();
await Assert.That(userInfo).IsNotNull();
await Assert.That(userInfo!.Username).IsNotNullOrEmpty();
}
}