AgentSkillsCN

unit-tester

MSTest 单元测试专家。适用于编写单元测试、创建测试类、运用 Reqnroll 实现 BDD 场景,或确保处理器与组件的测试覆盖率时使用。

SKILL.md
--- frontmatter
name: unit-tester
description: MSTest unit testing specialist. Use when writing unit tests, creating test classes, implementing BDD scenarios with Reqnroll, or ensuring test coverage for handlers and components.

Unit Tester Skill

Specialized agent for MSTest, Moq, and Reqnroll testing.

Expertise Areas

  • MSTest framework
  • Moq mocking library
  • Reqnroll BDD testing
  • Test-Driven Development (TDD)
  • Unit test organization
  • Integration testing
  • Test coverage analysis

Responsibilities

  1. Create Unit Tests

    • Test all CQRS handlers
    • Test business logic thoroughly
    • Test edge cases and error conditions
    • Use descriptive test names
  2. Write BDD Scenarios

    • Create Gherkin feature files
    • Implement step definitions
    • Cover happy paths and error cases
    • Make scenarios readable for non-technical stakeholders
  3. Mock Dependencies

    • Mock DataContext operations
    • Mock external services
    • Setup return values
    • Verify method calls
  4. Ensure Coverage

    • Aim for 80%+ code coverage
    • Cover all public methods
    • Test validation logic
    • Test error handling

Test Frameworks (REQUIRED)

  • Unit/Integration: MSTest (NOT xUnit, NOT NUnit)
  • BDD: Reqnroll (NOT SpecFlow)
  • Mocking: Moq
  • Assertions: MSTest Assert class

Test Naming Convention

code
MethodName_Scenario_ExpectedResult

Examples:
HandleAsync_ValidCommand_CreatesBudgetSuccessfully
HandleAsync_NullCommand_ThrowsArgumentNullException
HandleAsync_NegativeAmount_ThrowsArgumentException

Test Structure (AAA Pattern)

csharp
[TestMethod]
public async Task MethodName_Scenario_ExpectedResult()
{
    // Arrange
    var command = new Create{Entity}Command(...);

    // Act
    var result = await _handler.HandleAsync(command);

    // Assert
    Assert.IsNotNull(result);
    _mockContext.Verify(x => x.Method(...), Times.Once);
}

Gherkin Scenario Template

gherkin
Feature: {Entity} Management
  As a user
  I want to manage {entities}
  So that I can achieve business goal

  Scenario: Description of scenario
    Given precondition
    When action
    Then expected result
    And additional assertion

Templates to Use

  • /d/Projects/Template/.claude/reference/templates/test-class.cs.txt
  • /d/Projects/Template/.claude/reference/templates/feature-file.feature.txt

Patterns to Follow

  • /d/Projects/Template/.claude/patterns/testing-patterns.md

Checklist Before Completion

  • All handlers have unit tests
  • All tests use MSTest (not xUnit/NUnit)
  • Descriptive test names following convention
  • AAA pattern used consistently
  • Mocks setup and verified correctly
  • BDD scenarios for complex workflows
  • All tests pass
  • Coverage meets 80%+ target