상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
궁금한 상식 보기
환율 시장에서 성공하기 위한 7가지 원칙
절강 요리: 건강과 맛을 동시에 잡는 7가지 요리!
절강 요리: 요리 초보자를 위한 6가지 간단 레시피!
여드름이 싹 사라지는 10가지 비법
여드름 자국 제거를 위한 5가지 치료법
여드름이 심해질 때 피해야 할 5가지
여드름을 줄이는 10가지 자연 성분
상견례, 이런 환경에서 진행하세요 5가지 팁
상견례 후 긍정적인 인상을 남기는 5단계
상견례에서 카리스마 발산하기 위한 5가지 노하우
조부모와 함께하는 놀이, 아이의 창의성을 키우는 6가지 방법
조부모와의 대화가 주는 인생의 의미, 알아야 할 5가지
Previous
Next
수정하기 - JUnit 4와 JUnit 5의 차이점은 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
JUnit 4와 JUnit 5는 <a href='https://sangseek.com/sangseeks/자바/ko'>자바</a>에서 가장 널리 사용되는 단위 테스트 프레임워크입니다. 둘 다 테스트 작성과 실행을 돕지만, 설계, 아키텍처, 기능 면에서 여러 가지 중요한 차이점이 존재합니다. 아래에 그 차이점들을 자세히 설명합니다. 1. 아키텍처 및 모듈화 - *JUnit 4*: 단일 JAR 파일(junit-4.x.jar)로 제공되며, <a href='https://sangseek.com/sangseeks/모놀리식/ko'>모놀리식</a>(monolithic) 구조를 띕니다. 테스트 프레임워크와 러너, 어노테이션 등이 하나의 패키지 내에 통합되어 있습니다. - *JUnit 5*: 완전히 새롭게 설계된 모듈화 구조를 갖고 있습니다. JUnit Platform, JUnit Jupiter, JUnit Vintage 세 가지 주요 컴포넌트로 나뉩니다. - JUnit Platform : 테스트 실행 환경과 런처 역할을 수행하며, 다양한 테스트 엔진(JUnit 4, JUnit Jupiter 등)을 지원할 수 있음. - JUnit Jupiter : JUnit 5에서 도입된 새로운 프로그래밍 및 확장 모델을 포함하는 API. - JUnit Vintage : 기존 JUnit 3와 4 테스트를 실행할 수 있도록 돕는 호환성 엔진. 이런 분리 덕분에 유연성과 확장성이 크게 향상되었습니다. 2. 어노테이션과 테스트 라이프사이클 - *JUnit 4*: `@Test`, `@Before`, `@After`, `@BeforeClass`, `@AfterClass` 등 제한된 어노테이션 세트를 사용합니다. 테스트 메서드는 반드시 `public void` 여야 합니다. - *JUnit 5*: JUnit Jupiter가 새로운 어노테이션 세트를 제공합니다. - 테스트 메서드는 `public`일 필요 없이 아무 접근 제어자도 사용할 수 있습니다. - 라이프사이클 관련 어노테이션이 `@BeforeEach`, `@AfterEach`, `@BeforeAll`, `@AfterAll`로 바뀌었으며, 훨씬 직관적입니다. - 테스트 인스턴스 생명주기 변경이 가능합니다. 기본적으로 각 테스트마다 새로운 인스턴스가 생성되는 대신, `@TestInstance(Lifecycle.PER_CLASS)`를 사용해 클래스 단위 인스턴스를 쓸 수도 있습니다. 3. 확장 모델과 커스터마이징 - *JUnit 4*: 확장은 주로 `@RunWith`와 커스텀 러너(Runner) 생성을 통해 이루어집니다. 하지만 러너는 클래스 단위로만 적용할 수 있어 제한적입니다. - *JUnit 5*: `Extension` API로 작성되는 확장 모델을 도입해 훨씬 강력하고 세밀한 확장이 가능합니다. 각 테스트 메서드, 파라미터, 실행 전후 등 다양한 지점에서 확장이 가능하며, 여러 확장을 병렬로 적용할 수 있습니다. 4. 조건적 테스트 실행 - *JUnit 4*: 조건부 테스트 실행에 대한 기본 지원이 미비합니다. 필요하다면 외부 라이브러리를 사용하거나 커스텀 러너를 작성해야 했습니다. - *JUnit 5*: `@EnabledOnOs`, `@DisabledOnOs`, `@EnabledIf`, `@DisabledIf`, `@EnabledOnJre` 같은 다양한 조건부 어노테이션이 기본 제공되어 운영체제, JRE 버전, 시스템 속성 등 조건에 따라 테스트를 쉽게 제어할 수 있습니다. 5. 파라미터화 테스트 지원 - *JUnit 4*: `@RunWith(Parameterized.class)`를 이용한 파라미터화 테스트가 가능하지만, 사용법이 다소 번거롭고 제한적입니다. - *JUnit 5*: `@ParameterizedTest` 어노테이션과 다양한 소스(`@ValueSource`, `@CsvSource`, `@MethodSource` 등)를 제공해 훨씬 편리하고 강력한 파라미터화 테스트가 지원됩니다. 6. 동시성 및 병렬 테스트 실행 - *JUnit 4*: 병렬 테스트 실행을 지원하지 않으며, 외부 툴이나 커스텀 러너, 빌드 툴 설정을 통해서만 가능했습니다. - *JUnit 5*: 기본적으로 병렬 실행 기능을 내장하고 있으며, 설정을 통해 테스트 클래스 또는 메서드 단위로 병렬 실행을 쉽게 설정할 수 있습니다. 7. Assertions 및 Assumptions 개선 - *JUnit 4*: 기본적인 assertion과 assumption 메서드를 제공하지만 제한적입니다. - *JUnit 5*: 다양한 새 assertion 메서드가 추가되고, 람다를 사용해 실패 메시지를 늦게 평가하는 등 사용성을 크게 개선했습니다. 8. 레거시 지원 - *JUnit 4*: JUnit 3와 비교적 호환성을 제공하지만, 별도로 JUnit 5를 사용할 수 없었습니다. - *JUnit 5*: JUnit Vintage를 통해 기존 JUnit 3과 4 테스트를 그대로 실행할 수 있도록 지원합니다. 따라서 기존 테스트를 유지하면서 점진적으로 JUnit 5로 전환 가능. 9. 빌드 도구 및 IDE 통합 - JUnit 5는 JUnit 4보다 최신 빌드 도구(Gradle, Maven) 및 주요 IDE에서 더 적극적으로 지원되며, JUnit Platform을 통해 다양한 테스트 프레임워크를 함께 실행할 수 있는 인터페이스를 제공합니다. --- 요약하자면, JUnit 5는 JUnit 4에 비해 훨씬 모듈화되고 확장 가능하며 현대적인 자바 기능(람다, 스트림 등)을 활용할 수 있게 제작되었습니다. 그 결과 더 유연하고 표<a href='https://sangseek.com/sangseeks/현력/ko'>현력</a>이 뛰어난 테스트 코드 작성이 가능하며, 병렬 실행과 조건부 테스트 등 다양한 최신 테스트 요구사항을 기본 지원합니다. 반면, JUnit 4는 단순하고 익숙한 구조를 갖고 있지만 확장성이나 최신 기능 지원이 부족한 편입니다. 따라서 새로운 프로젝트에서는 JUnit 5를 권장하며, 기존 프로젝트는 JUnit Vintage를 통해 호환하며 점진적 마이그레이션하는 방식이 일반적입니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기