Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- es6
- 1px border
- Websocket
- ZOOM
- Strict
- 으
- 서버리스 #
- 10px
- Props
- &연산
- TS
- github
- 데이터베이스 #try #이중
- npm
- jwt
- 클론코딩
- entity
- 0.5px border
- ES5
- angular
- 0.75px border
- font-size
- TypeScript
- literal
- 전역변수
- 0.25px border
- 당근마켓
- 컴포넌튼
- 타입스크립트
- 문서번호
Archives
- Today
- Total
복잡한뇌구조마냥
[JAVA] TDD에서 자주 쓰는 테스트 어노테이션 정리 본문
1. @Test
- org.junit.jupiter.api.Test
- 메서드를 테스트 메서드로 지정
- 반환 타입은 void, public 필요 없음
@Test
void addTest() {
int sum = 2 + 3;
assertEquals(5, sum);
}
2. @DisplayName
- org.junit.jupiter.api.DisplayName
- 테스트 이름을 한글/문장으로 지정 (출력 시 가독성↑)
@Test
@DisplayName("2 + 3은 5가 되어야 한다")
void addTest() {
assertEquals(5, 2 + 3);
}
3. @BeforeEach / @AfterEach
- 각각 테스트 메서드 실행 전/후 실행되는 메서드
@BeforeEach
void setup() {
System.out.println("테스트 준비");
}
@AfterEach
void cleanup() {
System.out.println("테스트 정리");
}
4. @BeforeAll / @AfterAll
- 클래스 단위에서 모든 테스트 시작 전/후 실행
- static 메서드여야 함
@BeforeAll
static void initAll() { System.out.println("모든 테스트 시작 전"); }
@AfterAll
static void tearDownAll() { System.out.println("모든 테스트 종료 후"); }
5. @RepeatedTest
- 동일 테스트를 반복 실행
@RepeatedTest(5)
void repeatTest() {
assertTrue(Math.random() < 1);
}
6. @ParameterizedTest
- 파라미터를 바꿔가며 반복 실행 가능
@ParameterizedTest
@ValueSource(strings = {"hello", "world"})
void testWithParams(String word) {
assertNotNull(word);
}
7. @Disabled
- 테스트를 비활성화 (임시로 제외할 때)
@Test
@Disabled("아직 구현 안됨")
void notYetImplemented() { }
8. @Transactional (Spring Test)
- org.springframework.transaction.annotation.Transactional
- 테스트 실행 시 트랜잭션 시작 후 자동 롤백
- DB 상태를 깨끗하게 유지 가능
@SpringBootTest
@Transactional
class MemberRepositoryTest {
@Test
void saveTest() {
memberRepository.save(new Member("홍길동"));
// 테스트 끝나면 자동 롤백
}
}
9. @SpringBootTest
- Spring Boot 통합 테스트용 어노테이션
- 애플리케이션 전체 구동 (컨텍스트 로딩)
@SpringBootTest
class MemberServiceTest {
@Test
void contextLoads() { }
}
10. @ExtendWith
- JUnit 확장 기능 등록
- Spring과 함께 쓸 땐 @ExtendWith(SpringExtension.class)가 자동 포함됨
@ExtendWith(MockitoExtension.class)
class MyTest {
@Mock MyRepository repo;
}
11. @MockBean (Spring Boot)
- 스프링 빈을 Mock 객체로 대체
@SpringBootTest
class MyServiceTest {
@MockBean
private MyRepository repo;
@Test
void testMockRepo() {
when(repo.findAll()).thenReturn(List.of());
assertTrue(repo.findAll().isEmpty());
}
}
12. 정리
자주 쓰는 테스트 어노테이션만 잘 알아도
- 단위 테스트: @Test, @DisplayName, @BeforeEach, @AfterEach
- 통합 테스트: @SpringBootTest, @Transactional, @MockBean
정도면 충분히 TDD 기반 개발이 가능합니다.
LIST
'BE > JAVA' 카테고리의 다른 글
[JAVA] Effective Java - ordinal 메서드 대신 인스턴스 필드를 사용하라 (35) (1) | 2025.08.17 |
---|---|
[JAVA] Effective Java - 타입 안전 이종 컨테이너를 고려하라(33) (0) | 2025.08.16 |
[JAVA] JPA 기초 개념 (0) | 2025.08.14 |
[JAVA] 리플렉션(Reflection) 기초 (0) | 2025.08.13 |
[JAVA] Effective Java - 로 타입(raw type)은 사용하지 말라 (26) (2) | 2025.08.11 |