| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- 최소 신장 트리
- 스프링
- 자바
- Reflection
- 모던 자바 인 액션
- Deadlock
- Junit5
- java
- test
- 객체지향
- MST
- 리플렉션
- 운영체제
- 백준
- redis
- 스프링 시큐리티
- 문자열
- 모던자바
- CS
- BOJ
- 파이썬
- spring security
- 알고리즘
- Python
- 프록시
- 다이나믹 프록시
- Spring
- proxy
- OS
- 약수
Archives
- Today
- Total
Dev 달팽이 @_''
Java - JUnit 5 본문
Java - JUnit 5
JUnit 5
- 자바 개발자가 가장 많이 사용하는 테스팅 프레임워크
- 자바 8 이상 필요
- 대체제 : TestNG, Spock, ...

- JUnit Platform : 테스트를 실행해주는 런치 제공. TestEngine API 제공.
- Jupiter : TestEngine API 구현체로 JUnit 5를 제공.
- Vintage : JUnit 4와 3을 지원하는 TestEngine 구현체
기본 애노테이션
- @Test
Delivery.java
public class Delivery {
private DeliveryStatus status = DeliveryStatus.DRAFT;
private int limitArea;
public Delivery() {
}
public Delivery(int limitArea) {
this.limitArea = limitArea;
}
public DeliveryStatus getStatus() {
return status;
}
public int getLimitArea() {
return limitArea;
}
}
DeliveryStatud.java
public enum DeliveryStatus {
DRAFT, RIDING,COMPLETED
}
DeliveryTest.java
@Test
void delivery_test(){
Delivery delivery = new Delivery();
assertNotNull(delivery);
}

- BeforeAll/AfterAll
- 모든 테스트가 실행하기 전에 딱 한번만 호출
- 반드시 static으로 선언하고, return type이 존재하면 안됨
- static void
@Test
void delivery_test(){
Delivery delivery = new Delivery();
assertNotNull(delivery);
}
@Test
void delivery_test2(){
Delivery delivery = new Delivery();
assertNotNull(delivery);
}
@BeforeAll
static void beforeAll(){
System.out.println("beforeAll");
}
@AfterAll
static void afterAll(){
System.out.println("afterAll");
}

- BeforeEach/AfterEach
- 모든 테스트를 실행할 때 한번씩 실행
- 반드시 static일 필요없음
@BeforeEach
void beforeEach(){
System.out.println("beforeEach");
}
@AfterEach
void afterEach(){
System.out.println("afterEach");
}

- Disabled
- 테스트하고 싶지 않을 경우 사용
@Test
void delivery_test(){
Delivery delivery = new Delivery();
assertNotNull(delivery);
}
@Test
@Disabled
void delivery_test2(){
Delivery delivery = new Delivery();
assertNotNull(delivery);
}

테스트 이름 표기
- @DisplayNameGeneration
- Method와 Class 레퍼런스를 사용해서 테스트 이름을 표기하는 방법 설정
- 기본 구현체로 ReplaceUnderscores 제공
@DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class)
class DeliveryTest {
@Test
void delivery_test(){
Delivery delivery = new Delivery();
assertNotNull(delivery);
}
@Test
void delivery_test2(){
Delivery delivery = new Delivery();
assertNotNull(delivery);
}

- @DisplayName
- 어떤 테스트인지 테스트 이름을 보다 쉽게 표현할 수 있는 방법을 제공하는 어노테이션
- @DisplayNameGeneration 보다 우선순위가 높다
@Test
@DisplayName("배달 테스트1")
void delivery_test(){
Delivery delivery = new Delivery();
assertNotNull(delivery);
}
@Test
@DisplayName("배달 테스트2")
void delivery_test2(){
Delivery delivery = new Delivery();
assertNotNull(delivery);
}

Assertion
- assertEquals(expected,actual)
- 실제 값이 기대한 값과 같은지 확인
@Test
@DisplayName("배달 테스트1")
void delivery_test(){
Delivery delivery = new Delivery();
assertEquals(DeliveryStatus.DRAFT,delivery.getStatus());
}

- assertTrue(boolean)
- 다음 조건이 참인지 확인
@Test
@DisplayName("배달 테스트1")
void delivery_test(){
Delivery delivery = new Delivery(-10);
assertTrue(delivery.getLimitArea()>0,"배달 거리는 0이상 이어야합니다.");
}

- 그 밖에
- assertAll(executables...) : 모든 확인 구문 확인
- assertThrows(expectedType, executable) : 예외 발생 확인
- assertTimeout(duration, executable) : 특정 시간 안에 실행이 완료되는지 확인
- 마지막 매개변수로 Supplier<String> 타입의 인스턴스를 람다 형태로 제공할 수 있음
- 복잡한 메시지를 생성해야 하는 경우 사용하면 실패한 경우에만 해당 메시지를 만들게 할 수 있음
- AssertJ, Hemcrest, Trust 등의 라이버리를 사용할 수도 있음.
'Java&Spring > 더 자바, 어플리케이션을 테스트하는 다양한 방법' 카테고리의 다른 글
| Java - Mockito (0) | 2022.01.13 |
|---|---|
| Java - JUnit 5 테스트 반복 (0) | 2022.01.11 |