-
[애플리케이션을 테스트하는 다양한 방법] JUnit 소개와 시작개발/Test 2020. 12. 28. 03:39
백기선님 인프런 강의
더 자바, 애플리케이션을 테스트하는 다양한 방법
정리
연습 코드진행중 발생한 문제
자바 버전 관련 에러 - Error:java: invalid source release: 11 해결
JUnit5 소개
Junit4는 자체가 하나의 덩어리 jar로 디펜더쉴로 들어오고, junit4가 다른 라이브러리 참조한다.
Junit5는 JUnit5 자체가 여러 모듈화되었다. 플랫폼 위에 5의 세부모듈인Jupiter
,Vintage
를 올리는 형태다.
그 중JUnit Platform
은 JUnit으로 작성한 테스트코드를 실행시켜주는 런처를 제공한다.
런처를 통해 콘솔, 메인 메소드, 인텔리제이같은 툴에서도 자바로 써진 테스트코드를 실행할 수 있다.
인텔리제이에서 테스트 코드를 main 메서드 없이 작성해도 실행한다.
개발 툴이JUnit Platform
을 사용해서 클래스에 들어있는 테스트 어노테이션이 붙은 메서드를 실행해주기 때문이다.Jupiter
는 Junit5 구현체,Vintage
는 JUnit3와 4를 지원하는 테스트 엔진 구현체이다.JUnit5 시작하기
우선 스프링부트를 설치한다. https://goddaehee.tistory.com/238 참고
junit5 실행하는 간단한 방법을 보자.
스프링부트 프로젝트를 만든다. 2.2+ 버전의 스프링부트 프로젝트는 기본으로 JUnit5 의존성이 추가된다.기본으로 생성되는 스프링부트 클래스를 삭제하고 새로운 클래스와 테스트 클래스를 생성해서 실습한다.
테스트 클래스를 생성하는 명령어는
cmd
+shift
+t
또는 shift를 더블 클릭하고Java Declaration: Create Test
JUnit5에서는 테스트가
public
일 필요 없다.리플렉션을 사용해서라고 하는데, 리플렉션이 뭔지는 더자바-코드를 조작하는.. 강의 참고 (또는 찾아보자)
어노테이션
@Test
- 해당 메소드 안에있는 내용을 테스트한다.
@BeforeAll
,@AfterAll
- 테스트클래스 안에 모든 테스트 실행하기 전에(또는 후에) 한번만 호출이 된다.
- 반드시
static
메서드를 사용해야한다. - 접근제어자로
private
은 안되고default
는 된다. - 리턴타입 반드시
void
여야하고, 메소드 이름은 상관없다.
@BeforeEach
,@AfterEach
- 모든 테스트에 대해 하나의 테스트를 실행할 때마다, 각각 실행하기 이전(또는 이후)에 한번씩 실행.
- static일 필요 없다.
@Disabled
- 해당 테스트를 수행하지 않는다.
- 깨진 테스트가 있다면 고쳐야겠지만 필요한 경우도 있다.
- 예를들어 더이상 관리되지 않는 코드인데 소스가 정리가 안되서 테스트코드를 남겨둔 경우
-
나는 아직 경험이 없어서 잘 이해가 안된다.