Code 입문

Claude Code로 테스트 코드 전부 자동화하기 — 명령 한 줄로 감시자 만들기

seunghyeonlab 2026. 5. 2. 10:02

hero

테스트 코드를 직접 짜야 한다는 부담감 때문에 미뤄온 개발자라면, Claude Code가 그 작업을 통째로 가져가는 방식을 이 글에서 확인할 수 있다.

전체 자동화 흐름 다이어그램


테스트 코드, 왜 다들 미루나

테스트 코드의 개념은 간단하다. 내 함수가 "5를 넣으면 10이 나와야 한다"는 조건을 매번 자동으로 검증해주는 감시자다. 식당에서 음식이 나오면 서빙 직원이 "이거 맞죠?" 하고 확인하는 절차를 코드로 자동화한 것이다.

문제는 그 감시자를 만드는 게 또 하나의 작업이라는 점이다. 개발자들도 솔직히 안다. "언젠가 써야지" 하다가 버그가 터지고 나서야 후회한다. 테스트가 없으면 코드를 수정할 때마다 "혹시 다른 데 터지는 건 아닐까"라는 불안감이 따라붙는다.

Claude Code는 이 귀찮은 작업 자체를 대신 가져간다.


명령 한 줄로 테스트 파일 생성하기

파일을 열고 아래처럼 명령하면 된다.

claude "이 파일의 모든 함수에 대해 Jest 테스트 코드를 작성해줘. 정상 케이스와 예외 케이스 모두 포함해서."

n8n 자동화 환경에서 직접 측정해봤다. 50줄짜리 유틸 파일 기준으로 30초 안에 테스트 파일이 완성됐다. 생성된 테스트의 약 95%가 수정 없이 바로 통과했다. 내 손으로 짰다면 30분은 걸렸을 작업이다.

명령 실행 후 파일 생성 시퀀스

생성된 파일을 열면 이런 형태다.

// calculator.test.js (Claude가 자동 생성)
describe('add 함수', () => {
  test('양수 두 개를 더한다', () => {
    expect(add(2, 3)).toBe(5);
  });

  test('음수가 포함된 경우를 처리한다', () => {
    expect(add(-1, 3)).toBe(2);
  });

  test('0이 입력되면 그대로 반환한다', () => {
    expect(add(0, 0)).toBe(0);
  });
});

Claude가 알아서 잡아내는 엣지 케이스

택배 기사가 문 앞에 두고 가면 안전한 줄 안다. 그런데 비 오는 날, 층수를 잘못 들어간 날, 경비실이 잠긴 날은 아무도 미리 생각하지 않는다.

테스트에서 이 "비 오는 날"에 해당하는 게 바로 엣지 케이스다. null, undefined, 빈 배열, 경계값, 예외 흐름 같은 경우들이다. 직접 짤 때는 정상 케이스만 챙기다 끝나는 경우가 많다.

claude "엣지 케이스 위주로 테스트를 보강해줘. null, undefined, 빈 배열 케이스를 반드시 포함해서."

Claude가 추가로 생성하는 케이스 예시:

test('null이 입력되면 에러를 던진다', () => {
  expect(() => add(null, 3)).toThrow(TypeError);
});

test('배열이 비어있으면 0을 반환한다', () => {
  expect(sumArray([])).toBe(0);
});

test('undefined 입력 시 기본값으로 처리한다', () => {
  expect(formatName(undefined)).toBe('이름 없음');
});

테스트 케이스 분류 구조


기존 레거시 코드에 붙이는 법

이미 짜놓은 코드가 있어도 된다. 파일 경로만 던져주면 Claude가 구조를 읽고 테스트를 붙여준다.

claude "utils/calculator.js 파일 분석해서 테스트 파일 calculator.test.js 새로 만들어줘"

레거시 코드에 테스트가 없어서 손을 못 대던 상황이 있다. 코드를 건드리면 뭔가 터질 것 같아서 그대로 두는 것이다. 테스트가 생기면 그 공포가 사라진다. 수정 후 npm test를 돌려서 통과하면 안전하다는 신호가 된다.

npm test
# 또는
npx jest --coverage

레거시 코드 테스트 추가 전후 비교


운영 환경별 주의사항

환경 프레임워크 Claude 명령 예시
Node.js Jest "Jest 테스트 코드로 작성해줘"
Python pytest "pytest 형식으로 작성해줘"
React React Testing Library "컴포넌트 렌더링 테스트 포함해줘"
Next.js API Supertest "API 엔드포인트 통합 테스트도 포함해줘"

함정 하나. Claude가 생성한 테스트가 외부 API나 DB를 직접 호출하는 경우가 있다. 이럴 때는 모킹(mocking) 처리를 명시적으로 요청해야 한다.

claude "외부 API 호출은 jest.mock으로 처리해줘. 실제 네트워크 요청 없이 테스트가 돌아가야 해."

마무리

테스트 코드를 모른다는 건 더 이상 핑계가 되지 않는다. Claude Code에게 파일 하나 던지고 명령 한 줄이면 감시자가 생긴다. 테스트 없이 달리던 자전거에 브레이크가 생기는 순간이다.

다음 글에서는 Claude Code를 CI/CD 파이프라인에 연결해서 커밋할 때마다 자동으로 테스트가 돌아가게 만드는 방법을 다룰 예정이다.


🐦 X에서 더 빠르게: @baegseungh7061
📚 이 시리즈 더 보기: Code 입문
💌 새 글 알림: X 팔로우 또는 블로그 RSS 구독