SW/Gradle

Gradle: 환경에서 서블릿 테스트하기: JUnit과 Mockito 사용법

얇은생각 2025. 2. 24. 07:30
반응형

개발하면서 '이 코드, 제대로 작동할까?' 하고 의심스러울 때가 많죠. 특히 서블릿 같은 걸 다룰 때는 HTTP 요청이 왔다 갔다 하니까 테스트가 더 골치 아플 수도 있어요. 하지만 걱정 마세요! 오늘은 JUnit 4Mockito를 활용해서 쿠폰 서블릿을 깔끔하게 테스트하는 방법을 쉽게 알려드릴게요.

 

이 가이드를 따라가면:

  • Gradle에 필요한 라이브러리를 설정하는 법
  • HTTP 요청과 응답을 가짜(Mock) 객체로 만드는 방법
  • Mockito를 활용해서 단위 테스트를 효율적으로 작성하는 법
  • doGet과 doPost 메서드를 간편하게 테스트하는 팁

 

을 배울 수 있어요! 자, 그럼 가볍게 시작해볼까요? 😃

 


 

Gradle: 환경에서 서블릿 테스트하기: JUnit과 Mockito 사용법

 

Step 1: Gradle에서 필요한 라이브러리 추가하기

테스트를 작성하려면 먼저 필요한 라이브러리를 프로젝트에 추가해야겠죠?

  1. build.gradle 파일을 열어 주세요.
  2. dependencies 섹션에 아래 코드를 추가하세요.
  3. 파일을 저장한 후, gradle build를 실행하면 준비 완료! 🎉
// JUnit 4 추가
dependencies {
    testImplementation 'junit:junit:4.x.x' // 최신 버전으로 업데이트하세요!
    
    // Mockito 추가
    testImplementation 'org.mockito:mockito-core:x.x.x' // 최신 버전으로 변경하세요.
}

 


 

Step 2: 테스트용 클래스 만들기

이제 본격적으로 테스트를 작성할 파일을 만들어 봅시다!

  1. src/test/java 디렉터리에서 새로운 Java 클래스를 생성하세요.
  2. 클래스 이름은 CouponServletTest.java로 정하세요.
  3. 패키지 구조는 소스 코드와 일치해야 합니다. (com.bharath.gradle)

 

이제 본격적으로 코드 작성 준비 완료! 💪

 


 

Step 3: HTTP 요청과 응답을 가짜로 만들어보자!

서블릿을 테스트하려면 HTTP 요청과 응답을 다뤄야 하는데, 실제 서버를 띄우지 않고 테스트할 수 있도록 Mockito를 사용해서 가짜 객체(Mock)를 만들어야 해요.

import static org.mockito.Mockito.*;
import static org.junit.Assert.*;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;

import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;

public class CouponServletTest {

    @Mock
    private HttpServletRequest request;

    @Mock
    private HttpServletResponse response;

    @Mock
    private RequestDispatcher dispatcher;

    private CouponServlet servlet;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        servlet = new CouponServlet();
    }

 

이렇게 하면 request, response, dispatcher가 Mockito를 통해 자동으로 가짜 객체(Mock)로 생성돼요. 편리하죠? 😄

 


 

Step 4: doGet 메서드 테스트하기

이제 doGet 메서드를 테스트해볼까요? 쿠폰 코드를 받아 응답하는 기능이 있다고 가정해 봅시다.

    @Test
    public void testDoGet() throws ServletException, IOException {
        StringWriter stringWriter = new StringWriter();
        PrintWriter writer = new PrintWriter(stringWriter);

        when(response.getWriter()).thenReturn(writer);
        when(request.getParameter("couponCode")).thenReturn("DISCOUNT50");

        servlet.doGet(request, response);

        writer.flush();
        assertTrue(stringWriter.toString().contains("DISCOUNT50"));
    }

 

여기서 핵심은 response.getWriter()를 가짜로 만들어서 결과를 체크하는 거예요. 만약 응답 내용에 DISCOUNT50이 포함돼 있다면, 테스트 성공! 🎯

 


 

Step 5: doPost 메서드 테스트하기

다음은 doPost 메서드 테스트입니다. RequestDispatcher를 이용해서 페이지 이동이 정상적으로 되는지 확인할 거예요.

    @Test
    public void testDoPost() throws ServletException, IOException {
        when(request.getRequestDispatcher("result.jsp")).thenReturn(dispatcher);

        servlet.doPost(request, response);

        verify(dispatcher).forward(request, response);
    }
}

 

여기서 verify(dispatcher).forward(request, response); 부분이 중요해요. 이 코드가 실행됐다는 것은 result.jsp로 정상적으로 이동했다는 것을 의미하죠! 😊

 


 

마무리하며!

오늘 배운 내용을 다시 정리해볼까요? ✅ Gradle에서 JUnit & Mockito 설정하는 법HTTP 요청과 응답을 가짜(Mock) 객체로 만드는 방법doGet과 doPost 메서드를 단위 테스트하는 방법

이제 서블릿을 테스트하는 게 어렵지 않게 느껴지시죠? 😉 앞으로는 자신 있게 테스트 코드를 작성해보세요! 🔥

다음엔 서블릿의 통합 테스트(Integration Testing) 방법도 다룰 예정이니까 기대해 주세요! 🚀

반응형