![[기술 면접] 7. JUnit이 무엇인가요? 1 JUnit이 무엇인가요?](https://i0.wp.com/allhoneytip.com/wp-content/uploads/2023/08/%EC%A0%9C%EB%AA%A9%EC%9D%84-%EC%9E%85%EB%A0%A5%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94__%EB%B3%B5%EC%82%AC%EB%B3%B8-8-001-3-optimized.png?resize=300%2C300&ssl=1)
저번 시간에 이어, 이번엔 JUnit이 무엇인가에 대해 알아보겠습니다. 서비스 플랫폼 기업 K사와 L사에서 저번 질문과 연속으로 등장했던 질문입니다. 사용하는 기술이 프레임워크인지, 라이브러리인지 한번 생각해보시길 바랍니다.
![[기술 면접] 7. JUnit이 무엇인가요? 2 JUnit이 무엇인가요?](https://i0.wp.com/allhoneytip.com/wp-content/uploads/2023/08/image-54-optimized.png?resize=280%2C280&ssl=1)
Q: JUnit이 무엇인가요?
단위 테스트 프레임워크입니다.
JUnit4는 하나의 jar파일로 의존성을 불러오고 다른 라이브러리를 참조해서 사용하는 구조였지만, JUit5부터는 그 자체로 모듈화가 되어있습니다.
JUnit5의 구성
- Platform: 테스트를 실행해주는 런처를 제공하며 TestEngine API를 제공합니다.
- Jupiter: JUnit5를 지원하는 TestEngine API 구현체입니다.
- Vintage: JUnit4와 3를 지원하는 TestEngine 구현체입니다.
JUnit5와 JUnit4의 차이점.
- @Test: JUnit5의 Jupiter에는 Annotation들이 존재하기 때문에, JUnit4와 다르게 어떠한 속성도 선언하지 않습니다.
//JUnit4 @Test(expected = Exception.class) void create() throws Exception { ... } //JUnit5 @Test void create() { }
- Mock: 단위 테스트를 위해서 한 번에 하나의 메서드만을 실행하는데, 이러한 메서드가 의존성이 강하여 구현하기 힘들 경우 사용됩니다. 즉, 테스트프로그램을 실행 시키기 위한 가짜 객체입니다.
Q: JUnit의 생명주기에 대해 말씀해주세요.
※ JUnit5(JUnit4)
- @BeforeAll(@BeforeClass) : 전체 테스트 시작 전에 Class 기준으로 딱 한 번 호출되는 메서드입니다.
- @BeforeEach(@Before) : 각 테스트 메서드가 실행되기 전에 실행합니다.
- @Test : 테스트를 진행할 메서드에 사용합니다.
- @AfterEach(@After) : 각 테스트 메서드가 실행한 후에 실행합니다.
- @AfterAll(AfterClass) : 전체 테스트 종료 후에 딱 한 번 호출되는 메서드에 사용합니다.
※ @Test 메서드는 독립적으로 @BeforeEach, @AfterEach를 한 번씩 실행시키고, @BeforeAll과 @AfterAll은 전체에서 한 번 실행된 것을 공유합니다.
마치며
이번 시간에는 JUnit에 관련된 질문을 다루었습니다. 신입 개발자 기준으로 필수 개념이라 할수는 없지만, JUnit을 다루는 회사이거나, 포트폴리오에 테스트 코드 작성 이력이 있다면, 충분히 나올 수 있는 질문이니 숙지하고 가시길 권해드립니다.
다음 시간부터는 JPA에 대한 질문을 다루도록 하겠습니다.
![[기술 면접] 7. JUnit이 무엇인가요? 3 image 55](https://i0.wp.com/allhoneytip.com/wp-content/uploads/2023/08/image-55-optimized.png?resize=1024%2C430&ssl=1)
답글 남기기