← ClaudeAtlas

testing-patternslisted

Backend testing patterns with JUnit 6, Mockito 6, Testcontainers 2.0, Spring Boot slice tests, RestTestClient, and security testing. Use when user mentions testing, coverage, TDD, integration tests, or "write tests for".
IuliaIvanaPatras/claude-code-templates · ★ 0 · Testing & QA · score 65
Install: claude install-skill IuliaIvanaPatras/claude-code-templates
# Testing Patterns Skill Comprehensive testing patterns for Spring Boot 4 with JUnit 6, Mockito 6, and Testcontainers 2.0. ## When to Use - "write tests" / "test coverage" / "TDD" - "integration test" / "Testcontainers" / "database test" - "controller test" / "service test" / "repository test" - Before merging any PR or releasing changes --- ## Quick Reference: Test Types | Type | Annotation | Scope | Speed | Database | |------|-----------|-------|-------|----------| | Unit | `@ExtendWith(MockitoExtension)` | Single class | < 1ms | Mocked | | Controller slice | `@WebMvcTest` | Web layer only | ~100ms | None | | Repository slice | `@DataJpaTest` | JPA layer only | ~500ms | H2 or Testcontainers | | Integration | `@SpringBootTest` | Full context | ~2-5s | Testcontainers | | Security | `@WebMvcTest` + `@WithMockUser` | Web + security | ~100ms | None | --- ## Unit Tests (Service Layer) ```java @ExtendWith(MockitoExtension.class) class UserServiceTest { @Mock private UserRepository userRepository; @InjectMocks private UserService userService; @Nested @DisplayName("findById") class FindById { @Test @DisplayName("returns user when exists") void returnsUserWhenExists() { var user = new User("Alice", "alice@example.com"); when(userRepository.findById(any(UUID.class))).thenReturn(Optional.of(user)); var result = userService.findById(UUID.randomUUID()); assertThat(result.name