Junit5 - 3. 이론 - Junit4와의 비교 & 도입의 필요성

겔로그·2022년 12월 3일
0

Junit5

목록 보기
3/5
post-thumbnail

개요

Junit5의 신기능을 알아보기 이전에 기존 junit4와의 달라진 점에 대해 알아보는 시간을 가져보겠습니다.

이전 시간에 공유드린 내용을 다시 상기하자면 Junit5는 다음과 같은 정의를 가지고 있습니다.

JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage

이 때 JUnit Vintage는 이전 버전의 Junit3와 Junit4의 테스트 호환성을 위해 제공하는 기능으로, Junit5으로의 이전이 간편해졌습니다.

하지만, 우리는 Junit5으로의 version migrating을 진행해야만 합니다. 해당 이유는 무엇일까요?

1.Junit5의 annotation은 직관적입니다.

다음은 Junit4와 Junit5에서 제공하는 동일한 기능의 어노테이션을 비교한 자료입니다.

FeatureJUnit 4Junit 5
Declare a test method@Test@Test
Execute before all test methods in the current class@BeforeClass@BeforeAll
Execute after all test methods in the current class@AfterClass@AfterAll
Execute before each test method@Before@BeforeEach
Execute after each test method@After@AfterEach
Disable a test method/class@Ignore@Disabled
Test factory for dynamic testsN/A@TestFactory
Nested testsNA@Nested
Tagging and filtering@Category@Tag
Register custom extensionsN/A@ExtendWith

해당 Feature와 어노테이션을 비교할 경우, 각각의 표현에 있어 보다 더 직관적임을 알 수 있습니다.

2. Reflection에 의존하지 않아도 됩니다.

Junit4에서는 plugin과 ide의 통합 지원이 없었기 때문에 reflection에 의존해야만 했습니다.
Junit5 부터는 JUnit Platform이라는 테스트코드 통합 지원 플랫폼이 제공되어 테스트 코드 실행이 해당 플랫폼 위에서 수행됩니다.

3. 다양한 기능의 추가

Junit4에서 있었던 기능들이 신규로 추가/개선되어 제공되고 있습니다. Junit5 도입시 보다 더 다양한 기능으로 테스트 코드를 작성할 수 있습니다

해당 부분에 대해서는 다음 글에서 상세히 다루도록 하겠습니다.

4. private 메소드 테스트 허용

junit4에서는 모든 test method는 public 접근 제한자를 선언해야만 이용이 가능하였습니다. Junit5에서는 Reflection을 통해 자동으로 테스트 클래스를 검색하여 테스트 수행이 가능해집니다.

결론

junit4를 계속 사용하셔도 개발에 크게 문제되지 않습니다.

하지만 junit5 도입을 해도 기존에 사용하던 junit4 test code 또한 그대로 사용이 가능하기 때문에 개발자는 기존 코드를 유지한 채로 신규 테스트코드에 한하여 junit5를 도입할 수 있습니다.

따라서 junit5 도입에 있어 두려움을 크게 가질 필요가 없을 것이라고 생각됩니다.

한 번 junit5 도입을 적극적으로 고려하는건 어떨까요?

다음 글에서는 junit5 기능에 대해 좀 더 상세히 다루는 시간을 가져보겠습니다.

감사합니다.

Reference

https://howtodoinjava.com/junit5/junit-5-vs-junit-4/

profile
Gelog 나쁜 것만 드려요~

0개의 댓글

관련 채용 정보