| Annotation | Description |
|---|---|
| @Test | 테스트용 메소드를 표현하는 어노테이션 |
| @BeforEach | 각 테스트 메소드가 시작되기 전에, 실행되어야 하는 메소들 표현 |
| @AfterEach | 각 테스트 메소드가 시작된 후 실행되어야 하는 메소드르 표현 |
| @BeforeAll | 테스트 시작 전에 실행되어야 하는 메소드를 표현(Static 처리 필요) |
| @AfterAll | 테스트 종료 후에 실행되어야 하는 메소드를 표현(Static 처리 필요) |
1) @SpringBootTest
2) @ExtendWith
3) @WebMvcTest(Class명.class)
4) @Autowired about Mockbean
5) @MockBean
6) @AutoConfigureMockMvc
7) @Import
class PostTest {
@BeforeAll
static void beforeAll() {
System.out.println("## BeforeAll Annotation 호출 ##");
System.out.println();
}
@AfterAll
static void afterAll() {
System.out.println("## afterAll Annotation 호출 ##");
System.out.println();
}
@BeforeEach
void beforeEach() {
System.out.println("## beforeEach Annotation 호출 ##");
System.out.println();
}
@AfterEach
void afterEach() {
System.out.println("## afterEach Annotation 호출 ##");
System.out.println();
}
@Test
void test1() {
System.out.println("## test1 시작 ##");
System.out.println();
}
@Test
@DisplayName("Test Case 2!!!")
void test2() {
System.out.println("## test2 시작 ##");
System.out.println();
}
@Test
@Disabled
// Disabled Annotation : 테스트를 실행하지 않게 설정하는 어노테이션
void test3() {
System.out.println("## test3 시작 ##");
System.out.println();
}
}

assertEquals(a, b): a와 b의 값이 동일한지 확인
assertSame(a, b): a와 b의 객체가 동일한지 확인
assertNull(a): a가 null인지 확인
assertNotNull(a): a가 null이 아닌지 확인
assertTrue(a): a가 true인지 확인
assertFalse(a): a가 false인지 확인
assertThrows(입셉션 에러 종류 a, 발생하는 로직 b) : b 로직시에 a 입셉션이 발생하는지 확인
assertThat : AssertJ 라이브러리에 포함된 메서드, 어떤 조건이 참인지 확인
1) Test 코드를 작성하지 않고 결과를 검증하는 과정은 비용이 많이 든다.
2) 계층 별로 Test를 진행한다면 어느 부분이 잘못된 지 쉽게 파악 가능
⇒ 하나의 기능 혹은 메서드
1) 장점
2) 단점
⇒ unit이 하나였다면 반대로 여러 개의 계층이 테스트에 참여한 것
1) 장점
2) 단점