All Honey Tip

[기술 면접] 7. JUnit이 무엇인가요?

수정 일:

발행 일:

JUnit이 무엇인가요?

저번 시간에 이어, 이번엔 JUnit이 무엇인가에 대해 알아보겠습니다. 서비스 플랫폼 기업 K사와 L사에서 저번 질문과 연속으로 등장했던 질문입니다. 사용하는 기술이 프레임워크인지, 라이브러리인지 한번 생각해보시길 바랍니다.

JUnit이 무엇인가요?



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에 대한 질문을 다루도록 하겠습니다.

image 55


코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다