JAVA · 테스트
Spring 테스트 기초
@SpringBootTest로 Spring 컨텍스트 기반 통합 테스트를 수행합니다.
테스트중급SpringBootTestSpring통합테스트Autowired
핵심 설명
@SpringBootTest로 Spring 컨텍스트 기반 통합 테스트를 수행합니다.
Java code
// Spring Boot Test 의존성: spring-boot-starter-test
// @SpringBootTest
// class UserServiceIntegrationTest {
// @Autowired
// UserService userService;
//
// @Autowired
// UserRepository userRepository;
//
// @BeforeEach
// void cleanup() { userRepository.deleteAll(); }
//
// @Test
// @DisplayName("사용자 생성 통합 테스트")
// void createUser() {
// UserDTO dto = new UserDTO("홍길동", "hong@test.com");
// User created = userService.create(dto);
//
// assertNotNull(created.getId());
// assertEquals("홍길동", created.getName());
//
// // DB에 실제 저장 확인
// Optional<User> found = userRepository.findById(created.getId());
// assertTrue(found.isPresent());
// }
//
// @Test
// @DisplayName("중복 이메일 예외")
// void duplicateEmail() {
// userService.create(new UserDTO("A", "dup@test.com"));
// assertThrows(DuplicateException.class,
// () -> userService.create(new UserDTO("B", "dup@test.com")));
// }
// }
class Main {
public static void main(String[] args) {
System.out.println("@SpringBootTest: 전체 컨텍스트 로드");
System.out.println("@WebMvcTest: 웹 레이어만");
System.out.println("@DataJpaTest: JPA 레이어만");
}
}학습 팁
@SpringBootTest는 전체 컨텍스트를 로드하므로 느립니다. 슬라이스 테스트(@WebMvcTest, @DataJpaTest)를 먼저 고려하세요.
주의할 점
@Transactional을 테스트에 붙이면 자동 롤백됩니다. 편리하지만 실제 커밋 동작을 테스트하지 못하는 함정이 있습니다.
자주 묻는 질문
Spring 테스트 기초란 무엇인가요?
@SpringBootTest 로 Spring 컨텍스트 기반 통합 테스트를 수행합니다.
Spring 테스트 기초 학습 시 주의할 점은 무엇인가요?
@Transactional 을 테스트에 붙이면 자동 롤백됩니다. 편리하지만 실제 커밋 동작을 테스트하지 못하는 함정이 있습니다.
Continue Learning
Java 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.