포스트

Junit5작성

테스트 정의


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
반드시 static void  작성

@BeforeAll   // 모든 테스트가 실행되기 전 "한번만" 실행
@AfterAll    // 모든 테스트가 실행된 후 "한번만" 실행

----------------------------------------------------------------------------------------

반드시 static void  필요 없음

@BeforeEach  // 모든 테스트가 실행되기 전 "매번" 실행
@AfterEach   // 모든 테스트가 생행된 후 "매번" 실행 

----------------------------------------------------------------------------------------

@Disabled    // 테스트 실행을 막음




assert


assertNotNull()

  • null이 아닌 경우
1
2
// 해당값이 null이 아닌 경우 성공
assertNotNull("값");


assertTrue()

  • true인 경우
1
2
// 해당 조건이 true인 경우 성공
assertTrue("조건", () -> "실패 메세지 작성 가능");


assertEquals()

  • 결과 값이 같은지 비교
1
2
// 메세지를 람다식으로 넘겨 주어야 필요한 시점에만 연산. 
assertEquals("테스트 기대 값" , "테스트 결과 값", () -> "실패 메세지 작성 가능");


assertAll()

  • 테스트를 한번에 실행해 준다.
1
2
3
4
5
6
7
8
// 3개를 한번에 실행하고 3개중 몇개가 성공이고, 실패인지 파악가능.
assertAll(
  () -> assertNotNull("값"),
  () -> assertTrue("조건", () -> "실패 메세지 작성 가능"),
  () -> assertEquals("테스트 기대 값" , "테스트 결과 값", () -> "실패 메세지 작성 가능")
);



assertThrows()

  • 해당 객체 안에 예외가 발생했는지를 체크
1
2
3
4
5
6
// ex). new NumberCheck(10); 이라는 10이라는 정수를 확인하는 객체를 테스트 
IllegalArgumentException exception = 
    assertThrows(IllegalArgumentException.class, () -> new NumberCheck(10));

// 에러 메세지를 확인 할 수 있음.
assertEquals("기대 메세지", exception.getMessage());


assertTimeout()

  • 해당 시간 안에 테스트가 끝나는지 확인.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 해당 테스트가 10초안에 끝나면 성공.
assertTimeout(Duration.ofSeconds(10), () -> new NumberCheck(10));

//강제로 실패 시켜보기.
  
// 단점 : 테스트가 실행되는 시간 동안에는 테스트가 종료되지 않음.
// 600ms 동안은 테스트가 종료돼도 실행.
assertTimeout(Duration.ofMillis(300), () -> {
        new NumberCheck(10);
        Thread.sleep(600)
});

// 설정한 300ms에 도달하면 자동 실패 처리. 
// 주의 : 트랜잭션이 설정되어 있는 스레드와 다른 스레드를 가지고 테스트하기 때문에 
// 잘못된 결과를 도출 할 수도 있음.
assertTimeoutPreemptively(Duration.ofMillis(300), () -> {
  new NumberCheck(10);
  Thread.sleep(600)
});


이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.