Back to list
joaquimscosta

spring-boot-testing

by joaquimscosta

3🍴 0📅 Jan 24, 2026

SKILL.md


name: spring-boot-testing description: 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 migration from @MockBean.

Spring Boot 4 Testing

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@MockitoBeanRequired migration
@SpyBean@MockitoSpyBeanRequired migration
MockMvc (procedural)MockMvcTester (fluent)New AssertJ-style API
Implicit @AutoConfigureMockMvcExplicit annotation requiredAdd 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 TypeAnnotationUse When
Controller@WebMvcTestTesting request/response, validation
Repository@DataJpaTestTesting queries, entity mapping
JSON@JsonTestTesting serialization/deserialization
REST Client@RestClientTestTesting external API clients
Full Integration@SpringBootTestEnd-to-end, with real dependencies
Module@ApplicationModuleTestTesting bounded context in isolation

Core Workflow

  1. Choose test slice → Minimal context for fast tests
  2. Mock dependencies@MockitoBean for external services
  3. Use Testcontainers@ServiceConnection for databases
  4. Assert thoroughly → Use AssertJ, MockMvcTester (new), RestTestClient (new), WebTestClient
  5. Test security@WithMockUser, JWT mocking

Quick Patterns

See EXAMPLES.md for complete working examples including:

  • @WebMvcTest with MockMvcTester and @MockitoBean (Java + Kotlin)
  • @DataJpaTest with TestEntityManager for lazy loading verification
  • Testcontainers with @ServiceConnection for PostgreSQL/Redis
  • Security Testing with @WithMockUser for role-based access
  • Modulith Event Testing with Scenario API

Detailed References

Anti-Pattern Checklist

Anti-PatternFix
Using @MockBean in Boot 4Replace with @MockitoBean
@SpringBootTest for unit testsUse appropriate slice annotation
Missing entityManager.clear()Add to verify lazy loading
High-cardinality test dataUse minimal, focused fixtures
Shared mutable test stateUse @DirtiesContext or fresh containers
No security testsAdd @WithMockUser tests for endpoints

Critical Reminders

  1. @MockitoBean is mandatory@MockBean removed in Boot 4
  2. Slice tests are fast — Use them for focused testing
  3. Clear EntityManager — Required to test lazy loading behavior
  4. @ServiceConnection simplifies Testcontainers — No more @DynamicPropertySource
  5. Test security explicitly — Don't rely on disabled security

Score

Total Score

60/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

+10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

Reviews

💬

Reviews coming soon