csharp-test-develop

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

C# 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-developcsharp-test-develop
목적새 기능 TDD 개발기존 코드에 테스트 추가
워크플로우Red-Green-Refactor분석 → 테스트 작성 → 검증
구현 코드테스트 후 작성이미 존재
시점개발 시작개발 후 / 레거시 코드

分类csharp-tdd-developcsharp-test-develop
目的新功能TDD开发为现有代码添加测试
工作流Red-Green-Refactor分析 → 编写测试 → 验证
实现代码先写测试再开发已存在
适用阶段开发初期开发完成后 / 遗留代码

Workflow

工作流

Phase 0: 환경 확인

Phase 0: 环境确认

.csproj 파일에서 테스트 환경 자동 감지.
bash
undefined
从.csproj文件自动检测测试环境.
bash
undefined

csharp-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: 分析

대상 코드를 읽고 테스트 시나리오를 도출합니다.
동작:
  1. 대상 파일/클래스 읽기
  2. public 메서드 목록 추출
  3. 의존성 분석 (DI 인터페이스)
  4. 테스트 시나리오 도출 (정상/예외/엣지 케이스)
  5. 테스트 파일 경로 결정
Output:
markdown
undefined
读取目标代码并推导测试场景.
操作:
  1. 读取目标文件/类
  2. 提取public方法列表
  3. 分析依赖项(DI接口)
  4. 推导测试场景(正常/异常/边缘情况)
  5. 确定测试文件路径
输出:
markdown
undefined

분석 결과

分析结果

대상 클래스

目标类

  • 이름: OrderService
  • 경로: src/Services/OrderService.cs
  • 의존성: IOrderRepository, IPaymentGateway, ILogger<OrderService>
  • 名称: OrderService
  • 路径: src/Services/OrderService.cs
  • 依赖项: IOrderRepository, IPaymentGateway, ILogger<OrderService>

테스트 시나리오

测试场景

  1. CreateOrderAsync — 유효한 주문 생성 성공
  2. CreateOrderAsync — 재고 부족 시 예외 발생
  3. CreateOrderAsync — 결제 실패 시 롤백
  4. GetOrderByIdAsync — 존재하는 주문 반환
  5. GetOrderByIdAsync — 존재하지 않는 주문 null 반환
  6. CancelOrderAsync — 이미 취소된 주문 예외
  1. CreateOrderAsync — 有效订单创建成功
  2. CreateOrderAsync — 库存不足时抛出异常
  3. CreateOrderAsync — 支付失败时执行回滚
  4. GetOrderByIdAsync — 返回存在的订单
  5. GetOrderByIdAsync — 不存在的订单返回null
  6. 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

테스트 시나리오

测试场景

  1. CreateOrderAsync — 유효한 주문 생성 성공
  2. CreateOrderAsync — 재고 부족 시 예외 발생 ...
  1. CreateOrderAsync — 有效订单创建成功
  2. 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(参数化测试)

지침

指南

  1. references/csharp-test-patterns.md 패턴 적용
  2. 테스트 실행하여 통과 확인 (dotnet test)
  3. 테스트 결과 리포트 ` })

---
  1. 应用references/csharp-test-patterns.md中的模式
  2. 运行测试并确认通过 (dotnet test)
  3. 提交测试结果报告 ` })

---

Phase 3: 검증

Phase 3: 验证

  • agent 응답에서 테스트 통과 확인
  • 실패 시 수정 요청 (최대 3회)
  • 커버리지 리포트 출력 (coverlet 설치 시)

  • 确认代理返回的测试是否通过
  • 若失败则请求修改(最多3次)
  • 输出覆盖率报告(已安装coverlet时)

현재 전달받은 인자

当前接收的参数

ARGUMENTS: $ARGUMENTS
ARGUMENTS: $ARGUMENTS

실행 지시

执行说明

위 ARGUMENTS가 테스트를 작성할 대상 클래스/파일 설명입니다.
ARGUMENTS가 비어있으면 사용자에게 테스트 대상을 질문하세요.
호출 예시:
  • /csharp-test-develop src/Services/UserService.cs
    → 해당 파일 테스트 작성
  • /csharp-test-develop OrderService
    → OrderService 클래스 찾아서 테스트 작성

上述ARGUMENTS是待编写测试的目标类/文件说明.
若ARGUMENTS为空,请询问用户测试目标.
调用示例:
  • /csharp-test-develop src/Services/UserService.cs
    → 为该文件编写测试
  • /csharp-test-develop OrderService
    → 查找OrderService类并编写测试

실행 예시

执行示例

요청

请求

"OrderService에 대한 단위 테스트 작성해줘"
"请为OrderService编写单元测试"

실행 흐름

执行流程

markdown
undefined
markdown
undefined

Phase 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 접근 코드 →
IntegrationTests
, 나머지 →
UnitTests
소스 위치테스트 위치
src/Services/UserService.cs
tests/UnitTests/Services/UserServiceTests.cs
src/ViewModels/MainViewModel.cs
tests/UnitTests/ViewModels/MainViewModelTests.cs
src/Repositories/UserRepository.cs
tests/IntegrationTests/Repositories/UserRepositoryTests.cs

路径判定标准: 访问Repository/Database的代码 →
IntegrationTests
,其余 →
UnitTests
源码位置测试文件位置
src/Services/UserService.cs
tests/UnitTests/Services/UserServiceTests.cs
src/ViewModels/MainViewModel.cs
tests/UnitTests/ViewModels/MainViewModelTests.cs
src/Repositories/UserRepository.cs
tests/IntegrationTests/Repositories/UserRepositoryTests.cs

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/

  • csharp-test-patterns.md
    : C# 테스트 패턴 가이드 (AAA, Moq, FluentAssertions 등)
  • csharp-test-patterns.md
    : C#测试模式指南(AAA、Moq、FluentAssertions等)