Unnamed Skill

Spring Boot 1�� `�tXX � L��@ �i L��| JUnit 5@ Mockito| ��X� �1X� ��. Controller, Service, Repository t�� \ L��| ��<\ �1Xp� �pt�i��.

$ 安裝

git clone https://github.com/majiayu000/claude-skill-registry /tmp/claude-skill-registry && cp -r /tmp/claude-skill-registry/skills/testing/backend-test-generator ~/.claude/skills/claude-skill-registry

// tip: Run this command in your terminal to install the skill


name: backend-test-generator description: Spring Boot 1�� ` ��tXX � L��@ �i L��| JUnit 5@ Mockito| ��X� �1X� ��. Controller, Service, Repository t�� �\ L��| ��<\ �1Xp� �pt�i��. allowed-tools: Read, Grep, Glob

Backend Test Generator (Spring Boot)

t ��@ Spring Boot 1�� T�| �X� JUnit 5@ Mockito| ��\ L�� T�| ��<\ �1i��.

�� �

L�� ��

  • � L��: Controller, Service, Repository � t� L��
  • �i L��: API ���x� �i L�� (@SpringBootTest)

�� ��

  • ��l: Spring Boot 2.x/3.x
  • L�� �l: JUnit 5, Mockito, MockMvc, TestRestTemplate
  • L� �l: Maven, Gradle
  • ��: Java, Kotlin

� \8�

1��: ���m �  �

Git diff| �t �� |D Ux:

git diff HEAD
git status --short

�L (4<\ 1�� |D �� �X:

  • Controller: *Controller.java, src/main/java/**/controller/**
  • Service: *Service.java, *ServiceImpl.java, src/main/java/**/service/**
  • Repository: *Repository.java, src/main/java/**/repository/**
  • Entity: *Entity.java, src/main/java/**/entity/**, src/main/java/**/domain/**

2��: T� �

��  |D }� �L ��| E:

  • �\ �� T�
  • �� T� ��Ș
  • �\� REST ���x� (@GetMapping, @PostMapping �)
  • �� D�Ȥ \�
  • DTO  Entity ���m
  • Xt1 �� ���m

3��: L�� � �

| ��� 0| \ L�� \ �D �:

Controller L��

  • \ �: templates/controller-test.md 8�
  • �l: MockMvc, @WebMvcTest
  • ��: HTTP �� T�, Q� , �T

Service L��

  • \ �: templates/service-test.md 8�
  • �l: Mockito, @ExtendWith(MockitoExtension.class)
  • ��: D�Ȥ \�, x ��, ���X

Repository L��

  • \ �: templates/repository-test.md 8�
  • �l: @DataJpaTest, TestEntityManager
  • ��: CRUD ��, �@ ��

�i L��

  • \ �: templates/integration-test.md 8�
  • �l: @SpringBootTest, TestRestTemplate
  • ��: � API \�

4��: L�� | �1/�pt�

L�� | X �Y

Spring Boot \� lp| 0�:

  • src/main/java/com/example/UserController.javasrc/test/java/com/example/UserControllerTest.java
  • src/main/java/com/example/UserService.javasrc/test/java/com/example/UserServiceTest.java
  • src/main/java/com/example/UserRepository.javasrc/test/java/com/example/UserRepositoryTest.java

L�� t�� �� �Y

  • � L��: {ClassName}Test.java
  • �i L��: {ClassName}IntegrationTest.java

0t L�� |t �� ��

  1. |D }� � L�� T� E
  2. �� T�� ް L�� �pt�
  3. �\� 0�� �\ L�� ��
  4. Deprecated L�� p
  5. \ � � � Ux

5��: �� �� �1

�L �<\ ��| ��:

=
 ���m �� D�

=� � �� |:
  - src/main/java/com/example/UserController.java (Controller)
  - src/main/java/com/example/UserService.java (Service)

� L�� �1 ...

 �1 D�:
  - src/test/java/com/example/UserControllerTest.java (5 test cases)
    � testGetUser_Success
    � testGetUser_NotFound
    � testCreateUser_Success
    � testCreateUser_ValidationError
    � testDeleteUser_Success

  - src/test/java/com/example/UserServiceTest.java (6 test cases)
    � testFindUserById_Success
    � testFindUserById_NotFound
    � testCreateUser_Success
    � testCreateUser_DuplicateEmail
    � testUpdateUser_Success
    � testDeleteUser_Success

=� L�� 䄬� �: 85%

L�� �� �l���

�1 �� L��� �L 0�D �qt| i��:

�� 0�

  • L�� T܅t �UX� $� (test{MethodName}_{Scenario} (4)
  • Given-When-Then (4 �
  • L��� Žt� � XtX� JL
  • Mock/Stubt X� ��(
  • �� �t�| ��

Controller L�� 0�

  • MockMvc| ��X� HTTP �� L��
  • ��/Q� �,T ��
  • x x�� L�� (@ControllerAdvice)
  • x�/x� L�� (Security � �)

Service L�� 0�

  • D�Ȥ \� ��
  • Repository Xt1 Mocking
  • ���X ّ Ux
  • �@ x �� L��

Repository L�� 0�

  • @DataJpaTest ��
  • CRUD �� ��
  • �@ �� T� L��
  • } pt ��

�� �

# �� � 8�
backend-test-generator

# �� ��
"UserController� �\ L�� �1t"
"1�� ���m� �\ L�� �1t"
"UserService L�� �pt�t"

�X�m

  1. Mock ��: � DB� x� API| 8�X� J�] Mock ��
  2. L�� ��:  L��� Ž<\ � ��t| h
  3. **x �**: � L��� t� ��| h
  4. X� �� L��: � 䄬� �t D� �� ��
  5. Spring Context: �D�X� � �M��| \�X� JL

D Xt1

Maven (pom.xml)

<dependencies>
    <!-- JUnit 5 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <!-- Mockito -->
    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <scope>test</scope>
    </dependency>

    <!-- H2 Database for testing -->
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

Gradle (build.gradle)

dependencies {
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'org.mockito:mockito-core'
    testRuntimeOnly 'com.h2database:h2'
}

8� ��

�8\ \ �� � �L |�D 8�X8�:

  • templates/controller-test.md - Controller L�� \ �
  • templates/service-test.md - Service L�� \ �
  • templates/repository-test.md - Repository L�� \ �
  • templates/integration-test.md - �i L�� \ �
  • references/spring-boot-testing-guide.md - Spring Boot L�� �t�