JUnit 5 알아보기

4372 단어 JUnit5JavaTDDJUnit5

🔎JUnit 이란

JUnit은 전 세계 Java 개발자가 가장 많이 사용하는 테스트 프레임워크라고 한다.
그 중 JUnit 5는 가장 최근에 나온 프레임워크이다.
JUnit 5는 Java 8 버전 이상에서 사용가능하다.


JUnit 5와 이전 버전의 차이

모듈화

JUnit 5는 JUnit 4와 다르게 모듈화가 되어있다.

  • Platform : 테스트를 실행하는 기본 런처 제공과 TestEngine API를 제공.
  • Jupiter : TestEngine API 구현체로 JUnit 5를 제공.
  • Vintage : JUnit 4와 3을 지원하는 TestEngine 구현체.

테스트 프레임워크 기본을 담당하는 Platform과 확장기능을 제공하는 Jupiter,
이전 JUnit 4와 3의 호환성을 위한 Vintage가 합쳐진 프레임워크가 JUnit 5이다.

Public 그리고 static

JUnit 5 이하 버전에서는 클래스와 메서드에 public, static을 써야 테스트가 가능했다.
그러나 JUnit 5 부터는 생략이 가능하다.


JUnit 5 사용하기

Spring boot 2.2 버전부터 프로젝트를 만들 때 JUnit 5가 탑제되어있다.
spring boot를 사용하지 않으면서 JUnit 5를 사용하고 싶다면
dependency를 pom.xml에 추가해주면 된다.

<dependency>
	<groupId>org.junit.jupiter</groupId>
	<artifactId>junit-jupiter-engine</artifactId>
	<version>5.5.2</version>
	<scope>test</scope>
</dependency>

기본 어노테이션

  • @Test 테스트코드 정의.
  • @BeforeAll / @AfterAll 모든 테스트코드가 실행되기 전(Before), 후(After)에 실행.
    구현할 때 static을 사용해야 한다.
    리턴 타입이 존재할 수 없고 void만 가능하다.
	@BeforeAll
	static void beforeAll() {
		System.out.println("before all");
	}
	
	@AfterAll
	static void afterAll() { 
		System.out.println("after all");
	}
  • @BeforeEach / @AfterEach 각각의 테스트코드가 실행되기 전(Before), 후(After)에 실행.
    All과 달리 static일 필요는 없다.
    	@BeforeEach
	void beforeEach() {
		System.out.println("before Each");
	}
	
	@AfterEach
	void afterEach() { 
		System.out.println("after Each");
	}
  • @Disabled 해당 어노테이션이 있는 테스트코드는 실행안함.

테스트 이름 변경 어노테이션

  • @DisplayNameGeneration
    클래스 혹은 메서드 전역에 추가하여 사용.
    해당 클래스명 또는 메서드명의 _를 공백으로 치환한다.
    @DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class)
  • @DisplayName
    테스트코드 메서드에 추가하여 사용.
    메서드마다 테스트 이름을 수정가능.
    @DisplayName("╯°□°)╯")

참고자료


본 글는 백기선님의 더 자바, 애플리케이션을 테스트하는 다양한 방법을 수강하며 학습한 내용입니다.

좋은 웹페이지 즐겨찾기