Show HN: Java 개발자를 위한 코드-테스트 사이클 가속화
요약
Java 개발자의 코드-테스트 사이클을 가속화하기 위한 새로운 개발 도구 'Unlogged'를 소개합니다. 함수 직접 호출 기능과 코드 변경 사항을 핫 리로드하여 반환 값의 차이를 비교하는 기능을 제공합니다.
핵심 포인트
- Direct Invoke: 중단점 없이 특정 Java 함수를 직접 호출하고 실행 가능
- Atomic Run: 코드 변경 시 핫 리로드 및 함수 반환 값의 차이 강조
- 의존성 모킹 및 커스터마이징 가능한 어설션 기능 구현 예정
- IntelliJ 플러그인 형태로 제공되어 개발 워크플로우 개선
안녕하세요 HN, 저는 Parth입니다. 제 경험상 현재의 테스트 자동화 방식은 너무 오래 걸립니다. 이를 해결하기 위해, 저는 Java 개발자들을 위한 코드-테스트 사이클 (code-test cycle)을 가속화하는 개발자 도구를 만들고 있습니다. 이 도구는 두 가지 주요 부분으로 구성됩니다:
Direct Invoke - 전체 호출 계층 (call hierarchy)을 실행할 필요 없이, 어떤 Java 함수든 직접 호출할 수 있게 해줍니다. (예: HTTP 엔드포인트) 저의 일반적인 코딩 워크플로우에서는 IntelliJ IDE 내부의 “Evaluate Expression” 기능을 사용합니다. 보통 코드 어딘가에 중단점 (breakpoint)을 설정하고, HTTP API를 호출하여 중단점에 도달하면, 실행을 일시 정지시킨 상태에서 함수들의 반환 값 (return values)을 탐색하고 확인합니다. “Evaluate Expression”은 새로운 코드베이스를 탐색하거나, 제 함수들의 반환 값을 산티 테스트 (sanity test)로 확인하는 데 매우 유용했습니다. Direct invoke 기능은 중단점에 도달할 필요 없이 동일한 기능을 구현합니다. 이제 에디터에서 어떤 함수로든 이동하여 바로 실행할 수 있습니다. 파라미터 값은 JSON으로 입력되며, 필요한 클래스 인스턴스의 객체로 역직렬화 (deserialize) 됩니다.
Atomic Run - 코드 변경 사항을 핫 리로드 (hot-reload) 할 수 있게 해주며, 핫 리로드 전후의 변경된 함수의 반환 값 차이를 강조해 줍니다. 저는 Atomic Run이 유닛 테스트 (unit test) 케이스를 대체할 잠재력이 있다고 느끼지만, 아직 갈 길이 멉니다. 저는 다음과 같은 기능들을 구현하려고 생각 중입니다:
- 의존성 호출 모킹 (mocking) 옵션: 다운스트림 의존성 (downstream dependency) 호출을 모킹할 수 있게 함으로써 개발자에게 테스트 환경에 대한 더 많은 제어권을 제공하고자 합니다.
- 어설션 (assertions) 커스터마이징: 반환 값의 모든 차이가 중대한 변경 (breaking changes)을 의미하는 것은 아닙니다. 어설션은 비파괴적 변경 (non-breaking changes)을 수용할 수 있도록 유연해야 합니다.
- 이 데이터를 파일로 저장하는 워크플로우 (JSON 기반의 픽스처 (fixtures) 같은 방식 고려 중): 테스트 데이터를 정리하고 재사용하기 쉽게 만듭니다.
이 플러그인은 아직 초기 단계이므로, 발견하시는 버그를 해결하는 데 도움을 주시면 감사하겠습니다. 제 Discord 채널을 통해 연락해 주세요.
직접 체험해 보시려면, IntelliJ Marketplace에서 Unlogged를 설치하고 Java 에이전트 (플러그인 내에 다운로드 안내가 포함되어 있습니다)를 사용하여 Java 애플리케이션을 시작하세요.
플러그인 체험 링크: https://plugins.jetbrains.com/plugin/18529-unlogged
AI 자동 생성 콘텐츠
본 콘텐츠는 HN OpenAI Codex의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기