Junit은 자바에서 단위 테스트를 작성하고 실행하기 위한 프레임워크이다. 단위 테스트에 대해서는 이전 글에서 TDD와 함께 알아봤다. 다른 언어에서는 XUnit 등으로 불리고 Java에서 사용되는 대표적인 단위 테스트 프레임워크이다.
Junit에서는 단위 테스트를 작성하기 위한 여러 메서드와 어노테이션을 제공한다. 가장 일반적인 테스트 메서드는 @Test
어노테이션으로 표시되며, 테스트하려는 코드에 대한 기대 결과를 검증하는 assert
메서드를 사용하여 테스트 케이스를 작성하게 된다. 종류로는 Equals
, NotEquals
, NotNull
등 다양한 메서드가 존재한다.
또한 Junit 프레임워크에서는 테스트 실행과 관련된 다양한 기능을 제공한다. 테스트를 그룹화하기 위한 @RunWith
어노테이션, 테스트 실행 전후에 실행되는 초기화 및 정리 작업을 위한 @Before
및 @After
어노테이션, 특정 조건에 따라 테스트를 건너뛰기 위한 @Ignore
등을 사용할 수 있다.
Junit은 디자인 패턴의 창시자로 널리 알려진 에릭 감마가 토대를 만들었다. 비행기 타고 가면서 몇 시간 안에 만들었다고 하는 데, 참 재능이 무섭다..
Junit 프레임워크를 이용하여 단위 테스트를 작성하는 과정은 대표적으로 3가지가 있다.
설정 단계를 의미하고, 단위 테스트를 실행할 인스턴스를 생성하는 과정이다. 준비가 완료되면 테스트를 진행할 준비가 끝난다.
실제로 테스트하려는 코드를 실행하는 단계이다. 이 단계에서는 테스트 로직을 호출하고 특정 입력값을 제공하거나 상황을 시뮬레이션한다. 이에 대한 결과값을 얻어서 다음 단계로 넘어갈 수 있다. 각 단위 테스트는 실행 순서에 상관없이 독립적으로 존재하고 동작한다.
이전 단계에서 얻은 결과값을 확인하고 기대하는 결과와 일치하는 지 검증하는 단계이다. 이 단계에서 테스트 결과를 분석하여 성공과 실패 여부를 알린다. 일치하지 않는 경우 버그나 오류를 신속하게 파악하고 수정할 수 있다.
다음 글에서는 Junit5의 Assertions API들에 대해 자세하게 알아보자.