跳到正文
cccskills
免费在 GitHub 公开

spring-boot-testing

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.

中文简介正在准备中。当前显示原文说明。

查看安装方法

包含的文件(7)

  • SKILL.md4.6 KB
  • EXAMPLES.md5.5 KB
  • references/MODULITH-TESTING.md12.3 KB
  • references/SECURITY-TESTING.md12.0 KB
  • references/SLICE-TESTS.md11.8 KB
  • references/TESTCONTAINERS.md10.2 KB
  • TROUBLESHOOTING.md5.9 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

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

Related Skills

NeedSkill
Security configurationspring-boot-security
Module boundariesspring-boot-modulith
Data layer patternsspring-boot-data-ddd
Controller patternsspring-boot-web-api

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

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

adr

免费

Create, review, and manage Architecture Decision Records (ADRs) with auto-numbering, template detection, quality review, and index maintenance. Use when user mentions "ADR", "architecture decision", "document this decision", "create ADR", "review ADR", editing ADR files (docs/adr/, doc/adr/, .adr/), or discussing architectural choices and tradeoffs.

中文简介正在准备中。当前显示原文说明。

joaquimscosta/arkhe-claude-plugins212026年10月16日 更新

architect

免费

Analyze system architecture, module structure, API contracts, data models, and code patterns. Use when designing systems, reviewing module boundaries, evaluating API designs, analyzing data models, checking pattern conformance, tracing decisions, or reviewing frontend architecture. Triggers: "architecture", "module design", "API design", "data model", "boundaries", "patterns", "decisions", "frontend architecture".

中文简介正在准备中。当前显示原文说明。

joaquimscosta/arkhe-claude-plugins212026年10月16日 更新

Converts natural-language descriptions or UI spec files into optimized Google Stitch prompts. Use when creating, refining, or validating design directives for Google Stitch. Use when user says "create a Stitch prompt", "optimize this for Stitch", "convert this spec to a Stitch prompt", "write a UI prompt", or mentions Google Stitch prompt authoring. Follows Stitch best practices with short, directive prompts focused on screens, structure, and visual hierarchy.

中文简介正在准备中。当前显示原文说明。

joaquimscosta/arkhe-claude-plugins212026年10月16日 更新

Zero-dependency live-preview server providing an agent↔browser bidirectional companion. Watches a content directory, wraps HTML fragments in a frame template, broadcasts live-reload over WebSocket, and captures browser-side click events to a JSONL file. Use when an agent needs to show HTML to the user in a browser and react to clicks — mockups, design exploration, gallery browsing, multi-select choices, prototype iteration. Triggered by "live preview", "browser companion", "preview server", "browser mockup", "show in browser", "arkhe-preview", or any skill that wants to write HTML fragments and have the user see them reload in real time.

中文简介正在准备中。当前显示原文说明。

joaquimscosta/arkhe-claude-plugins212026年10月16日 更新

Deletes merged git branches (local and remote) and flags stale unmerged branches for manual review. Use when user mentions "cleanup branches", "delete merged branches", "prune old branches", "remove stale branches", "branch cleanup", or runs /cleanup-branches command.

中文简介正在准备中。当前显示原文说明。

joaquimscosta/arkhe-claude-plugins212026年10月16日 更新

Interactive Claude Code environment setup wizard. Detects existing configuration, guides through best-practice setup for Global CLAUDE.md, project scaffolding, MCP servers, hooks, custom agents, keybindings, and settings. Use when user runs /devtools:code-env-setup, mentions "setup claude code", "configure claude", "claude code setup", "environment setup", or "initialize claude code".

中文简介正在准备中。当前显示原文说明。

joaquimscosta/arkhe-claude-plugins212026年10月16日 更新

查看 joaquimscosta 的全部技能

报告此技能的问题