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 라이센스를 따릅니다.