(Spring) 테스트 코드 작성

2024. 10. 2. 20:58·Spring

1. 테스트 코드란?

테스트 코드는 애플리케이션의 특정 기능이 의도한 대로 동작하는지 확인하기 위한 코드입니다. Spring에서는 다양한 테스트 도구를 제공하며, 대표적으로 JUnit과 Spring Test가 있습니다.

2. Spring에서의 테스트 코드 구성 요소

  • JUnit : 자바 기반의 단위 테스트를 지원하는 프레임워크.
  • Mockito : 객체 지향 프로그래밍에서 모의 객체(Mock)를 활용한 테스트 지원 라이브러리.
  • Spring Test : Spring 컨텍스트에서의 테스트를 지원하는 도구.
  • @SpringBootTest : 스프링 애플리케이션 전체를 테스트하는 데 사용됩니다. 주로 통합 테스트 시 사용됩니다.

3. JUnit의 주요 어노테이션

  • @Test : 테스트 메서드를 나타냅니다.
  • @BeforeEach : 각 테스트 전에 실행되는 메서드를 정의합니다.
  • @AfterEach : 각 테스트 후에 실행되는 메서드를 정의합니다.
  • @BeforeAll : 모든 테스트 이전에 한 번 실행되는 메서드를 정의합니다.
  • @AfterAll : 모든 테스트 이후에 한 번 실행되는 메서드를 정의합니다.

4. SpringBootTest 어노테이션

  • @SpringBootTest: Spring의 전체 컨텍스트를 로드하여 통합 테스트를 수행할 수 있게 합니다.
@SpringBootTest
public class ExampleTest {

    @Test
    void contextLoads() {
        // 테스트 내용
    }
}

5. Mockito 사용법

Mockito는 의존성을 가볍게 만들어주는 Mock 객체를 생성하여 테스트에 활용합니다.

@Mock
private UserRepository userRepository;

@InjectMocks
private UserService userService;

@BeforeEach
void setup() {
    MockitoAnnotations.openMocks(this);
}

@Test
void testGetUserById() {
    when(userRepository.findById(1L)).thenReturn(Optional.of(new User(1L, "John")));

    User user = userService.getUserById(1L);

    assertEquals("John", user.getName());
}

6. 테스트 환경 설정

  • @MockBean : 실제 빈 대신 Mock 객체를 빈으로 등록하여 테스트합니다.
  • @DataJpaTest : JPA 레포지토리 계층을 테스트할 때 사용합니다.
@DataJpaTest
public class UserRepositoryTest {

    @Autowired
    private UserRepository userRepository;

    @Test
    void testFindByUsername() {
        User user = userRepository.findByUsername("john");
        assertNotNull(user);
    }
}

▶ TIP & 정리

  • 테스트 코드 커버리지 : 테스트 코드의 커버리지를 높이는 것이 중요합니다. 이를 위해 다양한 케이스에 대해 테스트를 작성해보세요.
  • 테스트 코드 작성 순서 : "Given-When-Then" 패턴을 사용하면 가독성이 좋은 테스트 코드를 작성할 수 있습니다.
    • Given : 테스트의 초기 상태를 정의
    • When : 테스트하려는 동작을 정의
    • Then : 결과를 검증
  • 매개변수화된 테스트 : JUnit5에서는 @ParameterizedTest를 활용하여 매개변수화된 테스트를 작성할 수 있습니다. 이는 여러 값에 대해 동일한 테스트를 반복할 때 유용합니다.
  • Mockito의 verify 사용 : 행동 기반 검증이 필요한 경우 verify()를 활용하여 특정 메서드가 호출되었는지 확인할 수 있습니다.
저작자표시 비영리 변경금지 (새창열림)

'Spring' 카테고리의 다른 글

(Spring) Servlet & DispatcherServlet 개념  (0) 2024.10.14
(Spring) MVC와 Spring MVC  (0) 2024.10.11
(Spring) Lombok & Application Properties  (0) 2024.10.07
(Spring) 서버 관련 개념 정리  (0) 2024.09.26
(Spring) Gradle  (0) 2024.09.25
'Spring' 카테고리의 다른 글
  • (Spring) MVC와 Spring MVC
  • (Spring) Lombok & Application Properties
  • (Spring) 서버 관련 개념 정리
  • (Spring) Gradle
lastdove
lastdove
lastdove 님의 블로그 입니다.
  • lastdove
    lastdove 님의 블로그
    lastdove
  • 전체
    오늘
    어제
    • 분류 전체보기 (80)
      • Spring (16)
      • JAVA (17)
      • JAVA 알고리즘 (20)
      • Project (5)
      • SQL 문제풀이 (17)
      • Git&Linux (2)
      • Web development(입문) (2)
      • Sparta (1)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
lastdove
(Spring) 테스트 코드 작성
상단으로

티스토리툴바