유닛 테스트 정리하기

하영·2025년 1월 19일
0

JavaScript

목록 보기
28/29

Unit Test

유닛 테스트란?

유닛 테스트는 개발자들이 코드 개별 단위를 검증하고 품질을 보장하는데 도움을 주는 소프트 웨어 개발에서 중요한 역할을 한다.

장기적으로 유지보수 비용을 절감하는 핵심적인 방법인데, 유닛 테스트를 통해 개별 함수나 메소드가 예상대로 정확하게 작동하는지 검증할 수 있기 때문이다.


유닛 테스트의 필요성

  • 테스트 시간 단축 : 프로젝트의 규모가 커질수록 수동 테스트보다 효율적이다.
  • 안정성 향상 : 버그를 조기에 발견하고 수정할 수 있다.
  • 리팩토링 신뢰성 : 코드 변경 후에도 기능이 올바르게 동작하는지 확인할 수 있다.
  • 협업 효율성 : 팀원들이 코드의 품질을 쉽게 확인할 수 있다.

유닛 테스트 주요 라이브러리

  • Jest : JavaScript 프로젝트에서 사용되는 테스트 프레임워크이다. 프론트엔드, 백엔드 모두 활용 가능하고 테스트 러너, matcher, Mock 기능 모두 제공한다.
  • JUnit : Java 언어를 위한 대표적인 유닛 테스트 프레임워크이다.
  • PyTest : Python에서 사용되는 강력한 테스트 프레임워크이다.

유닛 테스트 구현 방법

  1. 프레임워크 선택 : 작업하고 있는 프로젝트에 적합한 테스트 프레임워크를 선택한다.

  2. 다양한 시나리오를 고려하기 : 정상적인 입력값 외에도 경계값, 예외적인 경우도 시나리오로 테스트한다.

  3. 테스트 케이스 독립성 유지 : 각 테스트가 다른 테스트의 결과에 영향을 받지 않도록 한다.

  4. 명확한 테스트 이름 지정하기 : 테스트의 목적을 쉽게 이해할 수 있도록 이름을 지정한다.


✏️ PyTest를 사용한 간단 함수 단위 테스트 구현 예제

import pytest
def add(a, b):
    return a + b
def test_add():
    assert add(2, 3) == 5
    assert add(-1, 1) == 0
    assert add(-1, -1) == -2

실제로 테스트 코드 적용해보기

아직 성공하지 못한 실패 코드인데… 우선 이런 테스트 코드 프레임워크가 있고 어떻게 동작하는지 정리해보기 위해 실패작이어도 기록해본다…😭😭

나는 Jest 라이브러리를 사용하여 테스트 코드를 작성했다.

참고한 블로그

import { render, screen, fireEvent } from "@testing-library/react";
import Mypage from "../pages/Mypage";
import useUserStore from "../store/authStore";

jest.mock("react-router-dom", () => ({
  ...jest.requireActual("react-router-dom"),
  useNavigate: jest.fn(() => jest.fn())
}));

jest.mock("../store/authStore", () => ({
  useUserStore: jest.fn()
}));

describe("Mypage 컴포넌트 테스트", () => {
  it("유저 데이터가 잘 가져와진다.", () => {
    useUserStore.mockReturnValue({
      user: { id: "test_user", nickname: "test nickname", avatar: "test_avatar_url" },
      accessToken: "test_token",
      setUser: jest.fn(),
      clearUser: jest.fn()
    });
  });

  render(<Mypage />);
  expect(screen.getByText("마이페이지")).toBeInTheDocument();
  expect(screen.getByText("테스트 유저")).toBeInTheDocument();
});

이런식으로 어느 부분에서 실패를 했는지 바로 보여주기 때문에 성공이 뜰 때까지 수정하면 될 것 같다.
시간적으로 여유가 없어서 전부 다 이해하지는 못했지만 여기저기 검색하고 써보면서 익혀가는 중이다…🫠
얼른 마저 수정해보고 성공 했다는 문구를 보고싶다..


📚 참고자료

profile
왕쪼랩 탈출 목표자의 코딩 공부기록

0개의 댓글

관련 채용 정보