[개발 일기] 2025.06.14 - 단위 테스트 → 통합 테스트

2025. 6. 14. 22:06·개발 일기

💡 개요

 

오늘도 어김없이 내일 있을 시험을 준비중이다. (그렇기 때문에 간단하게 정리할께요..)

 

 

그 중에서 테스트 관련 자료를 봤는데 단위 테스트, 통합 테스트, 시스템 테스트를 보고 궁금증이 생겼다.

 

 

그것은 바로 “통합 테스트는 어떻게 하는 것 인가..!” 이다.

 

 

 

🛠️ 단위 테스트는 알겠어요..

 

단위 테스트(== 유닛 테스트)는 매우 간단하다.

 

 

각 기능(메서드)에 대한 테스트 코드를 작성하는 것이다.

 

 

다음은 게시글을 작성을 성공하는 메서드의 단위 테스트 예시 코드이다.

 

@Test
void 게시글_작성_성공() {
    // given
    PostService postService = new PostService();
    String title = "테스트 제목";
    String content = "테스트 내용";

    // when
    Post post = postService.createPost(title, content);

    // then
    assertThat.equals(title).isEqualTo(post.getTitle());
    assertThat.equals(content).isEqualTo(post.getContent());
}

 

 

 

🛠️ 통합 테스트는 뭐죠..?

 

그럼 통합테스트는 뭘까..?

 

 

통합 테스트는 여러 계층이 실제로 연동되는지를 검증하는 테스트이다.

 

 

일단 내가 개발중인 프로젝트는 모놀리틱 구조이다.

 

 

서비스, 컨트롤러, 리포지토리 등 모든 계층이 하나의 애플리케이션 안에 묶여 있다.

 

 

예를 들어, 게시글 작성 기능일 경우 “Controller → Service → Repository → DB” 까지 전체 흐름이 목적에 맞게 잘 동작하는지 확인하는 것이 통합 테스트이다.

 

 

예시 코드는 다음과 같다. (고마워요 ChatGPT!)

 

@SpringBootTest
@AutoConfigureMockMvc
class PostIntegrationTest {

    @Autowired
    private MockMvc mockMvc;

    @Autowired
    private PostRepository postRepository;

    @BeforeEach
    void setUp() {
        postRepository.deleteAll(); // 테스트 격리
    }

    @Test
    void 게시글_작성_요청_성공() throws Exception {
        // given
        String title = "통합 테스트 제목";
        String content = "통합 테스트 내용";
        String json = """
            {
                "title": "%s",
                "content": "%s"
            }
        """.formatted(title, content);

        // when & then
        mockMvc.perform(post("/posts")
                .contentType(MediaType.APPLICATION_JSON)
                .content(json))
            .andExpect(status().isOk())
            .andExpect(jsonPath("$.title").value(title))
            .andExpect(jsonPath("$.content").value(content));
    }
}

 

 

만약 MSA처럼 여러 서비스가 분산되어있는 구조라면 통합 테스트를 더 신경써서 작성해야 할 것 같다.

'개발 일기' 카테고리의 다른 글

[개발 일기] 2025.06.16 - Redis Bloom Filter  (0) 2025.06.16
[개발 일기] 2025.06.15 - 가상 스레드  (1) 2025.06.15
[개발 일기] 2025.06.13 - 도시락 먼저 데우기  (0) 2025.06.13
[개발 일기] 2025.06.12 - IPv4 vs IPv6  (0) 2025.06.12
[개발 일기] 2025.06.11 - CSMA/CA vs CSMA/CD  (0) 2025.06.11
'개발 일기' 카테고리의 다른 글
  • [개발 일기] 2025.06.16 - Redis Bloom Filter
  • [개발 일기] 2025.06.15 - 가상 스레드
  • [개발 일기] 2025.06.13 - 도시락 먼저 데우기
  • [개발 일기] 2025.06.12 - IPv4 vs IPv6
오도형석
오도형석
  • 오도형석
    형석이의 성장일기
    오도형석
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • MSA 모니터링 서비스
        • DB
      • 스파르타 코딩클럽
        • SQL
        • Spring
      • 백엔드
        • Internet
        • Java
        • DB
      • 캡스톤
        • Django
        • 자연어처리
      • Spring
        • JPA
        • MSA
      • ETC
        • ERROR
      • 개발 일기 N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 인기 글

  • 태그

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
오도형석
[개발 일기] 2025.06.14 - 단위 테스트 → 통합 테스트
상단으로

티스토리툴바