@Nested 어노테이션은 JUnit 5 에서 테스트 클래스를 내부 클래스로 구성할 때 사용합니다. 이걸로
관련 테스트 케이스들을 논리적으로 그룹화하여 더 명확하고 구조적인 테스트를 작성할 수 있습니다.
말이 어렵지만 풀어쓰면
큰 테스트 클래스 안에 작은 테스트 그룹(내부 클래스)를 만들어서 서로 관련된 테스트 들을 묶어서 실행시켜주는 것을 의미합니다.
- 큰 시험을 여러 개의 작은 시험으로 나누는 것과 비슷합니다. 예를 들어, 수학 시험에서 덧셈 문제들과 뺄셈 문제들을 따로 그룹으로 묶는 것처럼, 테스트도 관련된 부분끼리 묶어서 관리할 수 있습니다.
- **@Nested**는 테스트 코드 안에서 비슷한 종류의 테스트를 한곳에 모아서 보기 좋게 정리해주는 역할을 합니다.
예시
public class CalculatorTest {
// 덧셈 테스트 그룹
@Nested
class AdditionTests {
@Test
void addingTwoPositiveNumbers() {
// 두 양수의 덧셈 테스트
}
@Test
void addingNegativeNumbers() {
// 음수 덧셈 테스트
}
}
// 뺄셈 테스트 그룹
@Nested
class SubtractionTests {
@Test
void subtractingTwoNumbers() {
// 두 숫자의 뺄셈 테스트
}
}
}
이렇게 하면 Nested가 관련된 테스트들을 모아서 그룹화 한다는 것을 이해하기 쉽습니다, 추후에 문제가 생긴다면
어떤 기능에 문제가 발생했는지 쉽게 찾을 수 있습니다.
JUnit5
자바 프로그래밍 언어 용 단위 테스트 프레임워크
@BeforeEach
각각의 테스트가 실행되기 전에 수행되는 메소드
@BeforeEach
void setUp(){
System.out.println("각각의 테스트코드가 실행되기 전에 동작.");
}
@AfterEach
각각의 테스트가 실행된 후에 수행되는 메소드
@AfterEach
void tearDown(){
System.out.println("각각의 테스트 코드가 실행된 후에 수행.");
}
@BeforeAll
모든 테스트 코드가 수행되기 전에 최초로 수행되는 메소드
**static으로 작성해야 합니다.
@Order
테스트를 메소드 단위로 순서를 매길때는
테스트 클래스에
@TestMethodOrder(MethodOrderer.OrderAnnotation.class) 어노테이션을 적용
그리고 메소드 위에 @Order(n) n = 1부터 원하는 순서대로 정합니다.
@ParameterizedTest
하나의 테스트에 다른 파라미터를 넘기면서 여러번 테스트를 진행하도록 해주는 기능.
@ValueSource(ints = {1, 2, 3, 4, 5, 6, 7, 8, 9})를 사용하여 파라미터 값을 전달 할 수 있습니다.
전달되는 파라미터 수 만큼 테스트 메서드가 수행됩니다.
int, String 등 여러 타입의 파라미터를 전달할 수 있습니다.
@DisplayName("파라미터 값 활용하여 테스트 하기")
@ParameterizedTest
@ValueSource(ints = {1, 2, 3, 4, 5, 6, 7, 8, 9})
void parameterTest(int num) {
System.out.println("5 * num = " + 5 * num);
}
테스트에 자주 쓰이는 메소드
AssertEquals()
테스트 성공 여부에 따라 AssertionError 를 throw
assertEquals(expected, actual, message);
expected : 테스트 실시 나올거라 예상되는 값,
actual : 실행시킬 값
message : 테스트가 실패할 경우 출력될 메시지.
(람다식으로 메시지를 넣으면 테스트 실패시 메시지가 출력)
@Test
public void Test1(){
int expectedNum = 100;
Assertions.assertEquals(expectedNum,100);
}
// Pass
@Test
@DisplayName("assertEquals - Supplier")
void test1_1() {
Double result = calculator.operate(5, "/", 0);
// 테스트 실패 시 메시지 출력 (new Supplier<String>())
assertEquals(2.5, result, () -> "연산자 혹은 분모가 0이 아닌지 확인해보세요!");
}
//테스틑 실패시 "연산자 혹은 분모가 0이 아닌지 확인해보세요!" 출력
'부트캠프 > TIL' 카테고리의 다른 글
[부트캠프] TIL - application.properties 와 application.yml (0) | 2024.09.19 |
---|---|
[부트캠프] TIL - 정적 팩토리 생성자 (0) | 2024.09.13 |
[부트캠프] TIL - Entitiy간 연관관계 (0) | 2024.09.10 |
[부트캠프] TIL - 인증, 인가, JWT (1) | 2024.09.09 |
[부트캠프] TIL - JPA 돌아보기 (0) | 2024.09.09 |