From spring-boot
Provides Spring Boot 4 testing strategies: slice tests (@WebMvcTest, @DataJpaTest), integration tests, Testcontainers (@ServiceConnection), security (@WithMockUser, JWT), Modulith Scenario API, MockMvcTester, and @MockitoBean migration.
How this skill is triggered — by the user, by Claude, or both
Slash command
/spring-boot:spring-boot-testingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Comprehensive testing patterns including slice tests, Testcontainers, security testing, and Modulith Scenario API.
Comprehensive testing patterns including slice tests, Testcontainers, security testing, and Modulith Scenario API.
| Old (Boot 3.x) | New (Boot 4.x) | Notes |
|---|---|---|
@MockBean | @MockitoBean | Required migration |
@SpyBean | @MockitoSpyBean | Required migration |
MockMvc (procedural) | MockMvcTester (fluent) | New AssertJ-style API |
Implicit @AutoConfigureMockMvc | Explicit annotation required | Add to @SpringBootTest |
New fluent, AssertJ-style API for controller testing:
@WebMvcTest(UserController.class)
class UserControllerTest {
@Autowired
private MockMvcTester mvc; // NEW: Fluent API
@Test
void getUser_returnsUser() {
mvc.get().uri("/users/{id}", 1)
.exchange()
.assertThat()
.hasStatusOk()
.bodyJson()
.extractingPath("$.name")
.isEqualTo("John");
}
}
Key Benefits: Fluent assertions, better error messages, AssertJ integration.
| Test Type | Annotation | Use When |
|---|---|---|
| Controller | @WebMvcTest | Testing request/response, validation |
| Repository | @DataJpaTest | Testing queries, entity mapping |
| JSON | @JsonTest | Testing serialization/deserialization |
| REST Client | @RestClientTest | Testing external API clients |
| Full Integration | @SpringBootTest | End-to-end, with real dependencies |
| Module | @ApplicationModuleTest | Testing bounded context in isolation |
@MockitoBean for external services@ServiceConnection for databasesMockMvcTester (new), RestTestClient (new), WebTestClient@WithMockUser, JWT mockingSee EXAMPLES.md for complete working examples including:
MockMvcTester and @MockitoBean (Java + Kotlin)TestEntityManager for lazy loading verification@ServiceConnection for PostgreSQL/Redis@WithMockUser for role-based accessScenario API| Anti-Pattern | Fix |
|---|---|
Using @MockBean in Boot 4 | Replace with @MockitoBean |
@SpringBootTest for unit tests | Use appropriate slice annotation |
Missing entityManager.clear() | Add to verify lazy loading |
| High-cardinality test data | Use minimal, focused fixtures |
| Shared mutable test state | Use @DirtiesContext or fresh containers |
| No security tests | Add @WithMockUser tests for endpoints |
| Need | Skill |
|---|---|
| Security configuration | spring-boot-security |
| Module boundaries | spring-boot-modulith |
| Data layer patterns | spring-boot-data-ddd |
| Controller patterns | spring-boot-web-api |
@MockBean removed in Boot 4@DynamicPropertySourcenpx claudepluginhub joaquimscosta/arkhe-claude-plugins --plugin spring-bootProvides Spring Boot testing patterns for unit (Mockito), slice (@DataJpaTest/@WebMvcTest), integration (@SpringBootTest), and Testcontainers-based tests with JUnit 5. Use when writing @Test methods, @MockBean mocks, or test suites.
TDD workflow for Spring Boot with JUnit 5, Mockito, MockMvc, Testcontainers, and JaCoCo. Covers unit, web, integration, and persistence tests. Use when adding features, fixing bugs, or refactoring.
Builds Spring Boot 4.x applications following best practices: MVC REST APIs, Data JPA entities/repositories/services, Modulith, Security, Thymeleaf views, Maven config, ArchUnit/REST tests, Docker Compose, Taskfile.