testing-patternslisted
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