Spring Boot 4 Testing
SkillSecurityGuides your agent to pick the right Spring Boot testing approach with JUnit 6 and AssertJ.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Spring Boot 4 Testing skill
About this capability
Spring Boot 4 testing strategies and patterns. Use when writing unit tests, slice tests (@WebMvcTest, @DataJpaTest), integration tests, Testcontainers with @ServiceConnection, security testing (@WithMockUser, JWT), or Modulith event testing with Scenario API. Covers the critical @MockitoBean migrati
What this skill tells your AI
The instructions your AI receives, as published by joaquimscosta/arkhe-claude-plugins in plugins/spring-boot/skills/spring-boot-testing/SKILL.md and read by ahel’s review.
Comprehensive testing patterns including slice tests, Testcontainers, security testing, and Modulith Scenario API.
Critical Breaking Change
| 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 |
MockMvcTester (Spring Boot 4)
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 Annotation Selection
| 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 |
Core Workflow
- Choose test slice → Minimal context for fast tests
- Mock dependencies →
@MockitoBeanfor external services - Use Testcontainers →
@ServiceConnectionfor databases - Assert thoroughly → Use AssertJ,
MockMvcTester(new),RestTestClient(new), WebTestClient - Test security →
@WithMockUser, JWT mocking
Quick Patterns
See EXAMPLES.md for complete working examples including:
- @WebMvcTest with
MockMvcTesterand@MockitoBean(Java + Kotlin) - @DataJpaTest with
TestEntityManagerfor lazy loading verification - Testcontainers with
@ServiceConnectionfor PostgreSQL/Redis - Security Testing with
@WithMockUserfor role-based access - Modulith Event Testing with
ScenarioAPI
Detailed References
- Examples: See EXAMPLES.md for complete working code examples
- Troubleshooting: See TROUBLESHOOTING.md for common issues and Boot 4 migration
- Slice Tests: See references/SLICE-TESTS.md for @WebMvcTest, @DataJpaTest, @JsonTest patterns
- Testcontainers: See references/TESTCONTAINERS.md for @ServiceConnection, container reuse
- Security Testing: See references/SECURITY-TESTING.md for @WithMockUser, JWT mocking
- Modulith Testing: See references/MODULITH-TESTING.md for Scenario API, event verification
Anti-Pattern Checklist
| 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 |
Related Skills
| 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 |
Critical Reminders
- @MockitoBean is mandatory —
@MockBeanremoved in Boot 4 - Slice tests are fast — Use them for focused testing
- Clear EntityManager — Required to test lazy loading behavior
- @ServiceConnection simplifies Testcontainers — No more
@DynamicPropertySource - Test security explicitly — Don't rely on disabled security
Signals
- GitHub stars
- 21
- Forks
- 4
- Last commit
- Aug 2026
Advanced
- Catalog kind
- skill
- Gateway key
spring-boot-testing- Source
- github.com/joaquimscosta/arkhe-claude-plugins