광고 자리 모집 중 · 제휴 문의

VS Code 및 JetBrains IDE에서 Tabnine Chat으로 단위 테스트 생성, 로직 설명 및 리팩터링 수행하는 방법

365Finds Editorial
Wiki 문서 11,430편 수록

내 AI에서 365 Wiki 사용하기

아래 프롬프트를 복사해 평소 사용하는 AI에 붙여넣고 바로 질문하세요.

전체 Skill 다운로드

먼저 프롬프트로 체험해 보세요. 365 Wiki를 자주 쓴다면 전체 365Wiki Skill을 설치해 매번 붙여넣는 수고를 줄일 수 있습니다. 평소 쓰는 AI가 없다면 Gemini나 Microsoft Copilot 웹 버전도 사용할 수 있습니다.

Tabnine Chat은 Visual Studio Code 및 JetBrains IDE 제품군(IntelliJ IDEA, PyCharm, WebStorm, GoLand 등)의 개발 워크플로 내에서 직접 동작하는 대화형 AI 어시스턴트입니다. 브라우저와 코드 편집기 사이를 오가며 코드를 복사하고 붙여넣을 필요 없이, 개발자는 IDE 내부에서 단위 테스트를 생성하고 복잡하거나 낯선 비즈니스 로직을 분석하며 기존 함수를 안전하게 리팩터링할 수 있습니다.

본 가이드에서는 소프트웨어 개발자가 VS Code와 JetBrains IDE에서 Tabnine Chat을 호출하는 방식, 작업 공간 컨텍스트 연동 문법(@ 및 %), 프롬프트 구성 전략, 그리고 IDE 내장 Diff 검토 및 코드 반영 기능을 활용하여 3대 핵심 개발 작업을 수행하는 실무 방법을 상세히 설명합니다.


1. Tabnine Chat 호출 및 상호작용 방식

Tabnine Chat은 IDE 내 사이드바 패널과 코드 에디터 상단의 컨텍스트 연동 메뉴를 통해 신속하게 접근할 수 있습니다.

채팅 패널 열기

세 가지 상호작용 모드

  1. 메서드 단위 CodeLens: 지원 언어(Java, Python, TypeScript, JavaScript, Go, Rust, C#, PHP, Swift, C/C++)의 경우 함수나 메서드 선언부 바로 위에 클릭 가능한 CodeLens 링크가 표시됩니다. Explain 또는 Test를 클릭하면 해당 메서드가 자동으로 지정된 상태로 채팅 패널이 열립니다.
  2. 전역 슬래시 명령어(/): 채팅 입력창에 /를 입력하거나 새 세션 화면의 바로가기 버튼을 클릭하면 /explain-code(코드 설명), /generate-test-for-code(테스트 생성), /fix-code(오류 수정), /document-code(주석 및 문서화)와 같은 기본 명령어를 즉시 실행할 수 있습니다.
  3. 작업 공간 컨텍스트를 포함한 자연어 질의: 에디터에서 코드 블록을 드래그해 선택한 후, 질문을 자유롭게 입력하고 @(코드 요소) 및 %(파일 심볼) 멘션을 결합하여 정확한 컨텍스트를 제공합니다.

2. 대화형 단위 테스트(Unit Testing) 생성

반복적인 테스트 보일러플레이트 작성과 까다로운 경계 조건 검증은 Tabnine Chat의 생산성이 가장 두드러지는 작업입니다.

방법 A: 원클릭 내장 명령어

  1. 에디터에서 테스트 대상 함수나 클래스를 마우스로 선택합니다.
  2. Tabnine Chat 입력창에 /generate-test-for-code를 입력하거나 퀵 액션 버튼을 클릭합니다.
  3. Tabnine이 선택된 코드 로직을 분석하여 주요 정상 실행 경로와 기본 예외 처리를 포함한 단위 테스트 코드를 즉시 생성합니다.

방법 B: 컨텍스트 기반 구조화된 테스트 프롬프트

실제 엔터프라이즈 프로젝트에서는 특정 테스트 프레임워크와 Mock 라이브러리, 고유한 검증 규칙을 따라야 합니다. 작업 공간 멘션을 결합한 구조화된 프롬프트를 작성합니다:

프롬프트 예시:
선택한 메서드에 대해 JUnit 5와 Mockito를 사용하여 전체 단위 테스트 코드를 작성해 줘.
참조 컨텍스트: @OrderRepository, @PaymentClient
요구사항:
1. 주문 생성 성공 시 200 OK를 반환하는 정상 케이스 검증.
2. 재고 부족 시 OutOfStockException 예외가 발생하는 시나리오 검증.
3. 결제 모듈 호출 실패 시 트랜잭션이 롤백되는지 검증.
4. 모든 DB 쿼리 및 외부 HTTP 호출은 Mock 처리할 것.

팀 표준 테스트 명령어 공유(.tabnine_commands)

팀 차원의 일관된 테스트 형식을 유지하려면 사용자 정의 명령어를 등록할 수 있습니다:

  1. Tabnine Chat의 Settings(톱니바퀴 아이콘) > Define custom commands 영역에서 Add를 클릭합니다.
  2. 명령어 이름(예: /test-service)을 지정하고 $selected_code 변수를 포함한 템플릿을 작성합니다.
  3. 생성된 .tabnine_commands 설정 파일을 Git 저장소 루트에 커밋하면 팀원 전체가 동일한 테스트 생성 표준을 즉시 공유하게 됩니다.

3. 코드 로직 이해 및 설명(Explain Code)

레거시 코드베이스, 난해한 정규표현식, 재귀 알고리즘, 낯선 외부 SDK를 분석할 때 Tabnine Chat은 단계별 해설을 제공합니다.

빠른 로직 분석

  1. VS Code 또는 JetBrains 에디터에서 분석이 필요한 코드 영역을 선택합니다.
  2. 함수 상단의 Explain CodeLens를 클릭하거나 채팅창에 /explain-code를 입력합니다.
  3. Tabnine이 다음 항목을 체계적으로 정리하여 답변합니다:
    • 함수의 핵심 역할, 입력 파라미터 및 반환값의 정의.
    • 주요 조건 분기, 루프 순회 및 상태 제어 흐름.
    • 잠재적 사이드 이펙트(부작용) 및 비동기 처리 유의점.

단계별 심층 질문

고정된 주석이나 문서와 달리, Tabnine Chat에서는 이전 답변에 이어 추가 질의를 이어갈 수 있습니다:

답변 스타일 및 상세도 조절

채팅창의 Settings 메뉴에서 응답 방식을 맞춤 설정할 수 있습니다:


4. 기존 함수 리팩터링(Refactoring)

리팩터링의 핵심 원칙은 외부에서 관찰되는 동작 방식을 유지하면서 코드의 가독성, 유지보수성, 모듈성을 개선하는 것입니다.

효과적인 리팩터링 프롬프트 작성법

*“이 코드를 깔끔하게 고쳐줘”*와 같은 모호한 요청 대신 명확한 제약 조건을 제시해야 합니다:

  1. 목표(Goal): 적용할 구체적인 리팩터링 기법 명시(예: 메서드 추출 Extract Method, 보호 구문 Guard Clauses를 통한 중첩 분기 평탄화, 명령형 반복문의 함수형 스트림 변환 등).
  2. 컨텍스트(Context): 연관된 데이터 모델이나 헬퍼 함수를 @로 연결.
  3. 제약사항(Constraints): “공개 메서드 시그니처와 반환 타입 유지”, “기존 예외 발생 규칙 변경 금지” 등 변경 불가능한 범위를 지정.
  4. 검증(Validation): 리팩터링 후에도 기존 단위 테스트를 모두 통과해야 함을 명시.
프롬프트 예시:
목표: 선택한 함수의 순환 복잡도(Cyclomatic Complexity)를 낮추는 리팩터링 수행.
기법: 깊게 중첩된 if-else 구문을 조기 반환(Early Return)과 가드 구문(Guard Clauses)으로 대체.
제약조건:
- 메서드 시그니처와 외부 노출 인터페이스를 절대 변경하지 말 것.
- 기존 에러 로깅 포맷과 상태 코드를 유지할 것.
- 런타임 비즈니스 로직 및 예외 처리 동작을 완벽히 동일하게 유지할 것.
참조: @OrderValidationService

IDE 내부 Diff 확인 및 코드 반영

Tabnine은 수동 복사·붙여넣기 없이 IDE 내부에서 변경 사항을 즉시 반영할 수 있는 네이티브 UI를 제공합니다:

액션VS Code 및 JetBrains 내 동작 방식
Show Diff제안된 코드가 기존 파일을 수정하는 경우 활성화됩니다. 나란히(Side-by-side) 또는 인라인 비교 창이 열려 삭제된 라인(빨간색)과 추가된 라인(초록색)을 표시합니다. VS Code에서는 개별 변경 사항마다 Accept를 클릭하여 선별적으로 반영할 수 있습니다.
Apply생성된 코드 블록 우측 상단의 버튼입니다. 클릭 시 에디터 내 선택 영역이나 커서 위치에 리팩터링 코드가 한 번에 교체 적용됩니다.
Insert현재 에디터 커서 위치에 생성된 코드를 즉시 삽입합니다.
Copy클립보드에 코드를 복사하여 개발자가 부분적으로 참조하거나 편집할 수 있습니다.

5. 작업 정확도를 극대화하는 실무 팁

CodeLens를 통한 빠른 진입, 구조화된 컨텍스트 프롬프트, 그리고 IDE 내장 Diff 검토 및 적용 기능을 조화롭게 활용하면 Tabnine Chat은 VS Code와 JetBrains 환경에서 가장 직관적이고 안전한 개발 파트너가 됩니다.


참고 자료