□ Before & After 테스트
- @BeforeEach : 각각의 테스트 코드가 실행되기 전
- @AfterEach : 각각의 테스트 코드가 실행된 후
- @BeforeAll : 모든 테스트 코드가 실행되기 전
- @AfterAll : 모든 테스트 코드가 실행된 후
□ Custom 테스트
1. @DisplayName("") : 테스트에 표시될 이름 설정
2. @Nested : 테스트를 그룹지을 때 사용
3. @TestMethodOrder(MethodOrderer.OrederAnnotation.class) : 테스트의 순서를 지정
□ Repeat 테스트
- @RepeatedTest(value = n, name = "") : value값만큼 반복
- @ParameterizedTest : 매개변수 값을 변경해가며 반복
@ValueSource(ints = {1, 2, 3, 4...})
public class RepeatTest {
@RepeatedTest(value = 5, name = "반복 테스트 {currentRepetition} / {totalRepetitions}")
void repeatTest(RepetitionInfo info) {
System.out.println("테스트 반복 :
" + info.getCurrentRepetition() + " / " + info.getTotalRepetitions());
}
@DisplayName("파라미터 값 활용하여 테스트 하기")
@ParameterizedTest
@ValueSource(ints = {1, 2, 3, 4, 5, 6, 7, 8, 9})
void parameterTest(int num) {
System.out.println("5 * num = " + 5 * num);
}
}
□ Assertions 테스트
1. assertEquals(expect, result) & asswerNotEquals(expect, result) : (기대 값)과 (결과 값) 비교 [같을 시 성공 & 다를 시 성공]
@Test
void test1() {
Double result = calculator.operate(5, "/", 2);
assertEquals(2.5, result);
}
@Test
void test1_2() {
Double result = calculator.operate(5, "/", 0);
assertNotEquals(2.5, result);
}
2. assertEquals(expect, result, new Supplier<String>()) : 테스트 실패 시 메세치 출력
@Test
void test1_1() {
Double result = calculator.operate(5, "/", 0);
// 테스트 실패 시 메시지 출력 (new Supplier<String>())
assertEqu
}
3. assertTrue & asserFalse : Boolean값 테스트 [값이 True면 성공 & 값이 False면 성공]
@Test
void test2() {
assertTrue(calculator.validateNum(9));
assertFalse(calculator.validateNum(0));
}
4. assertNotNull & assertNull : Null값 테스트 [값이 Null이 아니면 성공 & 값이 Null이면 성공]
@Test
void test3() {
Double result1 = calculator.operate(5, "/", 2);
assertNotNull(result1);
Double result2 = calculator.operate(5, "/", 0);
assertNull(result2);
}
5. assertThrows(Expect Exception, () -> method) : 예외 테스트 [예상한 예외가 맞으면 성공]
@Test
void test4() {
IllegalArgumentException exception
= assertThrows(IllegalArgumentException.class,
() -> calculator.operate(5, "?", 2));
}
□ Given - When - Then 패턴
- given - 매개 변수 제공
- when - 받은 매개 변수로 실행
- then - 검증
@Test
@DisplayName("계산기 연산 성공 테스트")
void test1() {
// given
int num1 = 5;
String op = "/";
int num2 = 2;
// when
Double result = calculator.operate(num1, op, num2);
// then
assertNotNull(result);
assertEquals(2.5, result);
}
□ Junit5 User Guide
https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations
'Java & Spring > Spring' 카테고리의 다른 글
테스트코드 작성에 사용되는 메서드 및 애노테이션(1) (0) | 2024.09.23 |
---|---|
47일차 - Controller 테스트 (0) | 2024.09.11 |
JWT 구현 및 사용 (0) | 2024.09.09 |
37일차 - Spring강의(JPA Audting) (0) | 2024.09.04 |
31일차 - Spring강의(Entity 연관 관계) (0) | 2024.08.27 |