csharp-test-develop
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseC# Test Develop
C# Test Develop
기존 C# 코드에 대한 테스트 코드를 작성하는 스킬. TDD 워크플로우 없이 구현된 코드를 분석하고 테스트를 생성합니다.
这是一项为现有C#代码编写测试代码的技能。可分析未遵循TDD工作流开发的代码并生成测试。
Overview
概述
┌─────────────────────────────────────────────────────────────┐
│ csharp-test-develop (Orchestrator) │
│ ├── Phase 0: 환경 감지 ──── test-detector.js 재사용 │
│ ├── Phase 1: 분석 ───────── 대상 코드 → 테스트 시나리오 │
│ └── Phase 2: 검증 ───────── dotnet test 통과 확인 │
├─────────────────────────────────────────────────────────────┤
│ Sub-agent (Executor) │
│ └── 테스트 코드 작성 ────── references/csharp-test-patterns│
│ │
│ ※ csharp-best-practices 규칙 참조 가능 │
└─────────────────────────────────────────────────────────────┘┌─────────────────────────────────────────────────────────────┐
│ csharp-test-develop (Orchestrator) │
│ ├── Phase 0: 环境检测 ──── 复用test-detector.js │
│ ├── Phase 1: 分析 ───────── 目标代码 → 测试场景 │
│ └── Phase 2: 验证 ───────── 确认dotnet test通过 │
├─────────────────────────────────────────────────────────────┤
│ Sub-agent (Executor) │
│ └── 编写测试代码 ────── 参考references/csharp-test-patterns│
│ │
│ ※ 可参考csharp-best-practices规则 │
└─────────────────────────────────────────────────────────────┘csharp-tdd-develop과의 차이
与csharp-tdd-develop的差异
| 구분 | csharp-tdd-develop | csharp-test-develop |
|---|---|---|
| 목적 | 새 기능 TDD 개발 | 기존 코드에 테스트 추가 |
| 워크플로우 | Red-Green-Refactor | 분석 → 테스트 작성 → 검증 |
| 구현 코드 | 테스트 후 작성 | 이미 존재 |
| 시점 | 개발 시작 | 개발 후 / 레거시 코드 |
| 分类 | csharp-tdd-develop | csharp-test-develop |
|---|---|---|
| 目的 | 新功能TDD开发 | 为现有代码添加测试 |
| 工作流 | Red-Green-Refactor | 分析 → 编写测试 → 验证 |
| 实现代码 | 先写测试再开发 | 已存在 |
| 适用阶段 | 开发初期 | 开发完成后 / 遗留代码 |
Workflow
工作流
Phase 0: 환경 확인
Phase 0: 环境确认
.csproj 파일에서 테스트 환경 자동 감지.
bash
undefined从.csproj文件自动检测测试环境.
bash
undefinedcsharp-tdd-develop의 test-detector.js 재사용
复用csharp-tdd-develop的test-detector.js
node skills/csharp-tdd-develop/scripts/test-detector.js --detect
미설치 시 필요한 패키지 안내 후 중단.
---node skills/csharp-tdd-develop/scripts/test-detector.js --detect
若未安装必要包,将提示安装后终止流程.
---Phase 1: 분석
Phase 1: 分析
대상 코드를 읽고 테스트 시나리오를 도출합니다.
동작:
- 대상 파일/클래스 읽기
- public 메서드 목록 추출
- 의존성 분석 (DI 인터페이스)
- 테스트 시나리오 도출 (정상/예외/엣지 케이스)
- 테스트 파일 경로 결정
Output:
markdown
undefined读取目标代码并推导测试场景.
操作:
- 读取目标文件/类
- 提取public方法列表
- 分析依赖项(DI接口)
- 推导测试场景(正常/异常/边缘情况)
- 确定测试文件路径
输出:
markdown
undefined분석 결과
分析结果
대상 클래스
目标类
- 이름: OrderService
- 경로: src/Services/OrderService.cs
- 의존성: IOrderRepository, IPaymentGateway, ILogger<OrderService>
- 名称: OrderService
- 路径: src/Services/OrderService.cs
- 依赖项: IOrderRepository, IPaymentGateway, ILogger<OrderService>
테스트 시나리오
测试场景
- CreateOrderAsync — 유효한 주문 생성 성공
- CreateOrderAsync — 재고 부족 시 예외 발생
- CreateOrderAsync — 결제 실패 시 롤백
- GetOrderByIdAsync — 존재하는 주문 반환
- GetOrderByIdAsync — 존재하지 않는 주문 null 반환
- CancelOrderAsync — 이미 취소된 주문 예외
- CreateOrderAsync — 有效订单创建成功
- CreateOrderAsync — 库存不足时抛出异常
- CreateOrderAsync — 支付失败时执行回滚
- GetOrderByIdAsync — 返回存在的订单
- GetOrderByIdAsync — 不存在的订单返回null
- CancelOrderAsync — 已取消订单抛出异常
테스트 파일
测试文件
- 경로: tests/UnitTests/Services/OrderServiceTests.cs
---- 路径: tests/UnitTests/Services/OrderServiceTests.cs
---Phase 2: 테스트 작성 (서브에이전트 위임)
Phase 2: 编写测试(委托给子代理)
Task tool로 위임:
Task({
subagent_type: "general-purpose",
prompt: `
기존 코드에 대한 단위 테스트를 작성하세요.
SOLID 원칙, GoF 디자인 패턴, Modern C# 12/13 기능을 적용하세요.通过Task工具委托:
Task({
subagent_type: "general-purpose",
prompt: `
请为现有代码编写单元测试.
请应用SOLID原则、GoF设计模式、Modern C# 12/13特性.대상
目标
- 클래스: OrderService
- 경로: src/Services/OrderService.cs
- 테스트 파일: tests/UnitTests/Services/OrderServiceTests.cs
- 类: OrderService
- 路径: src/Services/OrderService.cs
- 测试文件: tests/UnitTests/Services/OrderServiceTests.cs
테스트 시나리오
测试场景
- CreateOrderAsync — 유효한 주문 생성 성공
- CreateOrderAsync — 재고 부족 시 예외 발생 ...
- CreateOrderAsync — 有效订单创建成功
- CreateOrderAsync — 库存不足时抛出异常 ...
테스트 패턴 (필수 적용)
测试模式(必须应用)
- AAA Pattern (Arrange-Act-Assert)
- 네이밍: Method_Scenario_ExpectedBehavior
- Moq로 의존성 Mock
- FluentAssertions 사용 (설치된 경우)
- xUnit Theory/InlineData (매개변수화 테스트)
- AAA Pattern (Arrange-Act-Assert)
- 命名规则: Method_Scenario_ExpectedBehavior
- 使用Moq模拟依赖项
- 使用FluentAssertions(已安装时)
- xUnit Theory/InlineData(参数化测试)
지침
指南
- references/csharp-test-patterns.md 패턴 적용
- 테스트 실행하여 통과 확인 (dotnet test)
- 테스트 결과 리포트 ` })
---- 应用references/csharp-test-patterns.md中的模式
- 运行测试并确认通过 (dotnet test)
- 提交测试结果报告 ` })
---Phase 3: 검증
Phase 3: 验证
- agent 응답에서 테스트 통과 확인
- 실패 시 수정 요청 (최대 3회)
- 커버리지 리포트 출력 (coverlet 설치 시)
- 确认代理返回的测试是否通过
- 若失败则请求修改(最多3次)
- 输出覆盖率报告(已安装coverlet时)
현재 전달받은 인자
当前接收的参数
ARGUMENTS: $ARGUMENTS
ARGUMENTS: $ARGUMENTS
실행 지시
执行说明
위 ARGUMENTS가 테스트를 작성할 대상 클래스/파일 설명입니다.
ARGUMENTS가 비어있으면 사용자에게 테스트 대상을 질문하세요.
호출 예시:
- → 해당 파일 테스트 작성
/csharp-test-develop src/Services/UserService.cs - → OrderService 클래스 찾아서 테스트 작성
/csharp-test-develop OrderService
上述ARGUMENTS是待编写测试的目标类/文件说明.
若ARGUMENTS为空,请询问用户测试目标.
调用示例:
- → 为该文件编写测试
/csharp-test-develop src/Services/UserService.cs - → 查找OrderService类并编写测试
/csharp-test-develop OrderService
실행 예시
执行示例
요청
请求
"OrderService에 대한 단위 테스트 작성해줘"
"请为OrderService编写单元测试"
실행 흐름
执行流程
markdown
undefinedmarkdown
undefinedPhase 0: 환경 확인
Phase 0: 环境确认
Runner: xUnit ✓ | FluentAssertions: YES ✓ | Moq: YES ✓
Runner: xUnit ✓ | FluentAssertions: YES ✓ | Moq: YES ✓
Phase 1: 분석
Phase 1: 分析
- 클래스: OrderService
- public 메서드 3개
- 의존성 3개 (모두 인터페이스)
- 시나리오 6개 도출
- 类: OrderService
- public方法3个
- 依赖项3个(均为接口)
- 推导6个测试场景
Phase 2: 테스트 작성
Phase 2: 编写测试
→ 서브에이전트 호출
← 테스트 파일 생성, 모든 테스트 통과 ✅
→ 调用子代理
← 生成测试文件,所有测试通过 ✅
완료!
完成!
- tests/UnitTests/Services/OrderServiceTests.cs (6 tests)
---- tests/UnitTests/Services/OrderServiceTests.cs (6个测试)
---테스트 파일 경로 규칙
测试文件路径规则
경로 결정 기준: Repository/Database 접근 코드 → , 나머지 →
IntegrationTestsUnitTests| 소스 위치 | 테스트 위치 |
|---|---|
| |
| |
| |
路径判定标准: 访问Repository/Database的代码 → ,其余 →
IntegrationTestsUnitTests| 源码位置 | 测试文件位置 |
|---|---|
| |
| |
| |
Error Handling
错误处理
| 상황 | 처리 |
|---|---|
| 테스트 러너 미설치 | 설치 명령어 출력 후 중단 |
| 대상 파일 미발견 | 사용자에게 경로 확인 요청 |
| 테스트 실패 | 최대 3회 수정 시도 후 사용자에게 도움 요청 |
| 场景 | 处理方式 |
|---|---|
| 未安装测试运行器 | 输出安装命令后终止流程 |
| 未找到目标文件 | 请求用户确认路径 |
| 测试失败 | 最多尝试3次修改,若仍失败则请求用户协助 |
위임 구조
委托结构
csharp-test-develop (Orchestrator)
│
└── general-purpose sub-agent
│
└── 참조 가능 리소스:
├── csharp-best-practices/rules/ ← C# 12 규칙 (필요시 Read)
└── references/
└── csharp-test-patterns.md ← 테스트 패턴 (필요시 Read)csharp-test-develop (Orchestrator)
│
└── general-purpose sub-agent
│
└── 可参考资源:
├── csharp-best-practices/rules/ ← C# 12规则(按需查阅)
└── references/
└── csharp-test-patterns.md ← 测试模式(按需查阅)Resources
资源
references/
references/
- : C# 테스트 패턴 가이드 (AAA, Moq, FluentAssertions 등)
csharp-test-patterns.md
- : C#测试模式指南(AAA、Moq、FluentAssertions等)
csharp-test-patterns.md