JUnit 5 testing framework with Mockito integration. Covers unit tests, mocking, and Spring Boot test integration. USE WHEN: user mentions "junit", "java test", "mockito", asks about "@Test", "@Mock", "@InjectMocks", "unit test java", "spring boot test" DO NOT USE FOR: Integration tests with containers - use `testcontainers`; REST API tests - use `rest-assured`; E2E tests - use Selenium; JavaScript/TypeScript - use `vitest` or `jest`

GitHub
Install command
npx skhub add claude-dev-suite/junit
Markdown
SKILL.md

JUnit 5 - Quick Reference

Deep Knowledge: Use mcp__documentation__fetch_docs with technology: junit for comprehensive documentation.

When NOT to Use This Skill

  • Integration Tests with Containers - Use testcontainers for Docker-based tests
  • REST API Testing - Use rest-assured for HTTP/REST testing
  • E2E Web Testing - Use Selenium or Playwright
  • JavaScript/TypeScript - Use vitest or jest for JS/TS
  • Database Integration Tests - Combine with spring-boot-integration skill

Essential Patterns

Basic Test

@Test
void shouldAddNumbers() {
    assertEquals(5, calculator.add(2, 3));
    assertThrows(ArithmeticException.class, () -> calculator.divide(10, 0));
}

Mockito + Service Test

@ExtendWith(MockitoExtension.class)
class UserServiceTest {

    @Mock
    private UserRepository userRepository;

    @InjectMocks
    private UserServiceImpl userService;

    @Test
    void shouldCreateUser() {
        when(userRepository.save(any())).thenReturn(user);

        UserResponse result = userService.create(request);

        assertNotNull(result);
        verify(userRepository, times(1)).save(any());
    }
}

Spring Boot Test

@SpringBootTest
@ActiveProfiles("test")
class UserServiceIntegrationTest {

    @Autowired
    private UserService userService;

    @MockBean
    private UserRepository userRepository;

    @Test
    void contextLoads() {
        assertNotNull(userService);
    }
}

Controller Test

@WebMvcTest(UserController.class)
class UserControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @MockBean
    private UserService userService;

    @Test
    void shouldReturnUsers() throws Exception {
        when(userService.findAll()).thenReturn(users);

        mockMvc.perform(get("/api/v1/users"))
            .andExpect(status().isOk())
            .andExpect(jsonPath("$[0].name").value("John"));
    }
}

Repository Test

@DataJpaTest
class UserRepositoryTest {

    @Autowired
    private TestEntityManager entityManager;

    @Autowired
    private UserRepository userRepository;

    @Test
    void shouldFindByEmail() {
        entityManager.persist(user);
        Optional<User> found = userRepository.findByEmail("john@email.com");
        assertTrue(found.isPresent());
    }
}

Common Annotations

AnnotationUsage
@TestTest method
@BeforeEachSetup before each test
@MockCreates mock
@InjectMocksInjects mocks
@SpringBootTestIntegration test
@WebMvcTestController test
@DataJpaTestRepository test

Anti-Patterns

Anti-PatternWhy It's BadSolution
Using @SpringBootTest for unit testsExtremely slowUse @ExtendWith(MockitoExtension.class)
Testing private methodsCoupled to implementationTest through public API
No mock cleanupTests affect each otherUse @BeforeEach, Mockito.reset()
Hardcoded test dataHard to maintainUse test data builders or factories
Not verifying mock interactionsSilent failuresUse verify() to ensure methods called
Too many assertions per testHard to debugOne logical assertion per test
Ignoring @Disabled testsTechnical debt accumulatesFix or remove disabled tests

Quick Troubleshooting

ProblemLikely CauseSolution
"NullPointerException in test"Mock not injectedCheck @Mock and @InjectMocks annotations
"Wanted but not invoked"Method not called or wrong argsVerify method call, check argument matchers
Test takes too longUsing @SpringBootTest unnecessarilyUse Mockito for unit tests
"UnnecessaryStubbingException"Mock setup but not usedRemove unused when() statements
Flaky testShared state or timingIsolate setup, avoid Thread.sleep
"No tests found"Wrong naming conventionUse test* prefix or @Test annotation

Reference Documentation

Discovery
Tags

No tags published for this skill.

Version
Latest version metadata

Version

v2026.09.24

Published

Sep 24, 2026

Category

Uncategorized

License

MIT

Source path

skills/testing/junit

Default branch

main

Latest commit

9496306

Tree SHA

fe4e2f1