인터페이스는 현지화되어 있으며, 원작자 Skill 콘텐츠는 원래 언어로 유지됩니다. 일부 안내 페이지는 영어로 제공됩니다.
Skills 둘러보기
개발 및 엔지니어링 · SKILL.md

junit

junit

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-ass…

Independent GitHub snapshot · Automated classification · Original documentation governs

Skill 문서

GitHub

name: junit description: | 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 allowed-tools: Read, Grep, Glob, Write, Edit

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

저장한 Skills